我正在寻找使用 C# 将大型二维数组写入 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;
我在这条线上遇到了一个例外:
var endCell = Worksheet.Cells[500, 500];
任何通过 COM 使用过 C# 和 Excel 的人都可以证明,收到的错误消息几乎没有用。我认为问题在于,当我第一次创建工作表时,用于工作表的基础数据结构的大小不足以索引单元格 500,500。
有谁知道如何达到预期的结果?我希望有一种简单的方法可以在创建 Range 之前重新调整底层数据结构的大小。
谢谢。
编辑:错误消息是:
{"Exception from HRESULT: 0x800A03EC"}
使用和excel错误代码-2146827284。
更新:下面评论中提供的链接暗示了在兼容模式下打开 Excel 工作表的问题。这似乎是问题所在。如果我在运行代码之前将文档保存为 .xlsx 或 .xlsm 格式,这似乎可行。我的问题是我不能期望我的用户每次都这样做。有没有一种程序化的方式来实现这一点?是否只是打开文件,检查扩展名,然后在需要时将其保存为新格式的情况?