![]() |
1
5
我不确定这是否是你的问题,但很可能是。您没有正确清理Excel对象。它们是非托管代码,清理起来很困难。最后应该是这样的:正如评论所指出的,使用ASP.NET中的Excel不是一个好主意。此清理代码来自WinForm应用程序:
编辑 另一种选择是使用ADO.NET打开工作簿。
|
![]() |
2
1
在每个请求上创建/销毁Excel都将具有绝对糟糕的性能,无论您做什么。一般来说,运行任何使用自动化的办公应用程序都是一件令人讨厌的事情,原因有很多(参见 here )我让它工作的唯一方法是让应用程序的单个实例(在我的例子中是Word)初始化一次,然后将请求排队到该实例进行处理。 如果您可以远离应用程序并自己解析文件(使用MS库,仅XML) |
![]() |
3
1
从ASP.NET使用interop会遇到很多问题。除非这是为了一些小的内部应用,否则最好不要继续使用它。 Office Interop不是传统意义上的编程API——它是Office宏系统发挥到了极致,具有处理过程间工作的能力——例如,Excel宏可以与Outlook交互。 使用interop的一些后果是:
所有这一切都使得Interop成为常规桌面应用程序所要避免的,并且只能作为服务器应用程序的最后手段,因为需要操作或脚本的GUI弹出窗口泄漏过程在服务器环境中是谋杀。 一些替代方案包括:
|
![]() |
4
0
这个错误可能正是它所说的,您得到了一个内存不足的错误。尝试将值数组的加载拆分为几个较小的块,而不是一次获取整个范围。我在C中试用了您的代码,没有问题,但我加载的电子表格大多是空的。 我注意到范围是整个电子表格(从A2到IV65536或其他)。我不确定这是不是有意的。 你可以尝试使用sheet.usedRange,它可以减少你正在加载的单元格的数量。 我学到了一些你可能会觉得有用的小东西:
|