C#Excel Interop行限制 - > HRESULT:抛出0x800A03EC异常

时间:2017-01-26 13:54:14

标签: c# .net excel interop

我有一个C#应用程序,其目的是存储大量数据。我正在使用Microsoft.Office.Interop.Excel(Microsoft.Office.Interop.Excel.dll版本14.0.0.0)来帮助我完成此任务。我安装了Excel 2007。

我使用以下几行:

    excelApp = new Microsoft.Office.Interop.Excel.Application();
    excelWorkBook = excelApp.Workbooks.Add(misValue);//*--------> LINE NOT WORKING */
    excelWorksheetBeingWritten = (Excel.Worksheet)excelWorkBook.Worksheets.get_Item(1);

我的代码然后迭代一个大的对象列表,每次必须写一行时,我会做类似的事情:

    var startCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 1];
    var endCell = excelWorksheetBeingWritten.Cells[excelLineCounter, 2];
    string[] tmpArray = new string[2] { stringVar1, stringVar2 };
    tmpRange = excelWorksheetBeingWritten.Range[startCell, endCell];
    tmpRange.Value = tmpArray;

当excelLineCounter超过65536时,抛出“HRESULT:0x800A03EC异常”。我完全了解(in)着名的Excel2007前行限制(正好是65536)。我不明白的是,当Excel 2007(我的版本)的文件限制为1.048.576行时,互操作使用该限制的原因。

另一方面,如果我用以下内容替换上面的“LINE NOT WORKING”,它似乎使用Excel 2007行限制,异常消失:

excelWorkBook = excelApp.Workbooks.Open(@"H:\Workbook1.xlsx");//*--------> LINE WORKING */

注意:“Workbook1.xlsx”是以前保存为“Excel Workbook(* .xlsx)”的空白工作簿

有人可以告诉我,为了配置Excel Interop对象默认使用Excel 2007限制,我需要做什么样的魔法,最好不要先放置以前保存的空.xlsx文件?

1 个答案:

答案 0 :(得分:0)

昨天我遇到了类似的问题,解决方案是默认更改Excel设置以创建xlsx文件。

在Excel中:文件 - >选项 - >保存 - >以这种格式保存文件

您的默认值可能是“Excel 97-2003(* .xls)”,就像我的那样。如果将其更改为“Excel工作簿(* .xlsx)”,则代码将起作用。

相关问题