【发布时间】:2012-08-29 18:27:10
【问题描述】:
我希望使用 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。
更新:下面 cmets 中提供的链接暗示了在兼容模式下打开 Excel 工作表的问题。这似乎是问题所在。如果我在运行代码之前将文档保存为 .xlsx 或 .xlsm 格式,这似乎可行。我的问题是我不能期望我的用户每次都这样做。有没有一种程序化的方式来实现这一点?是否只是打开文件,检查扩展名,然后在需要时将其保存为新格式的情况?
【问题讨论】:
-
虽然它“几乎没用”,但如果你告诉我们你所看到的会很有趣。也许你有这个问题(stackoverflow.com/questions/7099770/…)?
-
请注意,在旧版本的 excel(例如 2003)中,您的工作表不能超过 256 列(最后一个是 IV)和 65536 行,因此它们不能包含 500 *500 矩阵不拆分