问题描述
我正在C#WinForms应用程序中使用Office Interop库向Excel 2016写入约25000行和110列数据。任何元素的最大长度为420个字符。
我正在使用二维对象数组从DataTable中读取值,并将此数组传递给Range.set_Value
方法。
该应用程序对于其他DataTables正常运行,但是对于特定数据,出现错误:
HRESULT中的C#异常:0x800A03EC
在使用Range.set_Value
时。我无法确定是25000行还是110列中的哪一个导致了错误。
我当然可以将数据分成小块,直到我确定引起问题的确切行和列,但是有没有更好的方法来调试问题?
数据可能具有各种特殊字符(数据由第三方应用生成)。
编辑1:
我了解到,如果是Excel 2007,则不能添加超过8192个字符的单元格。但是我的数据在任何单元格中最多包含425个字符,而我的Excel版本是2016。
解决方法
经过反复试验,我能够找到数据问题。
二维数组中的一些元素以“ =”字符开头,在Excel中被视为公式的开头。由于元素值不是有效的公式,因此Excel引发Exception。
我在这些文本值前加上了'符号,一切正常。
希望这对某人有帮助。