C#Excel Interop:使用Range.set_Value时,HRESULT的异常:0x800A03EC

问题描述

我正在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。

我在这些文本值前加上了'符号,一切正常。

希望这对某人有帮助。