这是有效的..我将处理代码移至 finally 块,现在每次都失败。
我有一个包含 4 条记录、6 列长的测试电子表格。这是我用来引入它的代码。这是 IIS 5(我的电脑)和 IIS 6(Web 服务器)上的 ASP .Net 3.5。
它在捕获前的线上爆炸:“values = (object[,])range.Value2;” 出现以下错误:
11/2/2009 8:47:43 AM :: Not enough storage is available to complete this operation. (Exception from HRESULT: 0x8007000E (E_OUTOFMEMORY))
有任何想法吗?建议?我从 codeproject 获得了大部分代码,所以我不知道这是否是使用 Excel 的正确方法。感谢您的任何帮助,您可以提供。
这是我的代码:
Excel.ApplicationClass app = null; Excel.Workbook book = null; Excel.Worksheet 工作表 = null; Excel.Range 范围 = null; 对象 [,] 值 = 空; 尝试 { // 配置 Excel app = new Excel.ApplicationClass(); app.Visible = false; app.ScreenUpdating = 假; app.DisplayAlerts = 假; // 用上传的文件打开一个新的excel实例 book = app.Workbooks.Open(path); // 获取书中的第一个工作表 sheet = (Excel.Worksheet)book.Worksheets[1]; // 从第二行的第一个单元格开始 range = sheet.get_Range("A2", Missing.Value); // 将所有单元格向右移动 range = range.get_End(Excel.XlDirection.xlToRight); // 向下获取所有单元格 range = range.get_End(Excel.XlDirection.xlDown); // 获取右下角单元格的地址 字符串 downAddress = range.get_Address(false, false, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing); // 获取完整的数据范围 range = sheet.get_Range("A2", downAddress); // 获取所有数据的二维数组 值 = (object[,])range.Value2; } 捕获(异常 e) { LoggingService.log(e.Message); } 最后 { // 清理 范围=空; 表=空; 如果(书!= null) book.Close(false, Missing.Value, Missing.Value); 书=空; 如果(应用程序!= null) app.Quit(); 应用程序=空; } 返回值;