将大型2D数组写入Excel

Dar*_*ung 5 c# excel

我正在寻找使用C#将大型2D数组写入Excel工作表。如果数组是500 x 500,那么我用来编写此代码的代码如下:

 var startCell = Worksheet.Cells[1, 1];
 var endCell = Worksheet.Cells[500, 500];
 var writeRange = (Excel.Range)Worksheet.Cells[startCell, endCell;
 writeRange.Value = myArray;
Run Code Online (Sandbox Code Playgroud)

我在这条线上有一个例外:

var endCell = Worksheet.Cells[500, 500];
Run Code Online (Sandbox Code Playgroud)

正如通过COM使用C#和Excel的任何人都可以作证,收到的错误消息几乎没有用。我认为问题在于,当我第一次创建工作表时,用于工作表的基础数据结构的大小不足以索引单元500,500。

有人知道如何达到预期的结果吗?我希望有一个简单的方法可以在创建Range之前重新调整基础数据结构的大小。

谢谢。

编辑:错误消息是:

{"Exception from HRESULT: 0x800A03EC"}
Run Code Online (Sandbox Code Playgroud)

和excel错误代码为-2146827284。

更新:在下面的注释中提供的链接暗示了在兼容模式下打开Excel工作表的问题。这似乎是问题所在。如果在运行代码之前以.xlsx或.xlsm格式保存文档,这似乎可以正常工作。我的问题是我不能期望用户每次都这样做。有没有实现这一目标的计划方式?是否只是打开文件,检查扩展名,然后根据需要将其保存为新格式的情况?

Dar*_*ung 3

找到了解决方案。

不要使用 Worksheet.Cells[x, x],而是使用 Worksheet.get_range(x, x) 。