【发布时间】:2020-10-07 02:13:15
【问题描述】:
我在 C# WinForms 应用程序中使用 Office 互操作库将大约 25000 行和 110 列数据写入 Excel 2016。任何元素的最大值长度为 420 个字符。
我正在使用二维对象数组从 DataTable 中读取值,并将此数组传递给 Range.set_Value 方法。
该应用程序在其他 DataTables 上运行良好,但对于特定数据,我收到错误:
来自 HRESULT 的 C# 异常:0x800A03EC
在使用Range.set_Value 时。我无法弄清楚 25000 行和 110 列中的哪一个导致了错误。
我当然可以开始将数据分成小块,直到我确定确切的行和列导致问题,但是有更好的方法来调试问题吗?
数据可能包含各种特殊字符(数据由第三方应用生成)。
编辑 1:
我了解到,如果是 Excel 2007,则不能添加超过 8192 个字符的单元格。但我的数据在任何单元格中最多包含 425 个字符,而我的 Excel 版本是 2016。
【问题讨论】:
-
您是否在寻找内部异常?
-
InnerException 为空
-
COM 调用失败,你必须有一个计划。您还应该考虑实现 IMessageFilter 以便您可以告诉 COM 重试。即使使用过滤器,您也需要实施某种类型的重试策略。
-
COM 调用仅在包含大约 25000 行的特定数据时失败,并且在多次重试后无法正常工作。相同的代码适用于所有其他数据集
标签: c# export-to-excel excel-interop