2010-03-16 70 views
0

我正在尝试将对象(Class1)作为字符串保存在单元格值中。我的问题是,从我不时有收到COMException:在Excel单元格值中保存Xml会导​​致ComException

HRESULT:0x8007000E(E_OUTOFMEMORY)

(它是一种随机的,但我还没有确定还没有任何具体的模式),当我写的值成细胞。任何想法都会受到欢迎

出于演示目的: 让Class1成为要转换为Xml字符串的类。 (请注意,我删除了字符串开头处的xml声明,以避免出现前导码 - 不可打印的字符)
< Class1 xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”的xmlns:XSD = “http://www.w3.org/2001/XMLSchema”>
< ElementID> HL690375 </ElementID>
< /的Class1>”

的Class1 myClass的新= 1类();
这个类被转换为一个字符串s。s = ConvertObjectToXmlString(myClass);
然后s被分配给一个单元格
范围r = Application.ActiveCell;
r.Value2 = s; (1)如果字符串太大,我将其限制为32000个字符,并将字符串拆分为32000个字符的块,并将块保存在多个单元格中。
(2)在添加到单元格之前,我不要引用字符串。我需要吗?如果是这样怎么办?
(3)所有对象内容均为英文。
(4)C#代码示例会很好,但是VB.net代码是可以的。

+0

在每次使用时记录字符串的内容。发生异常时,将记录的值与以前的值进行比较,看看是否有任何模式出现。 – AMissico 2010-03-18 00:03:05

回答

0

它可能是你创建的字符串有时包含'非法'字符......就像一个Excel试图转换成另一个单元格位置......它可能不是一个$,但你可以得到这个想法。

+0

你知道我在哪里可以找到'非法'字符列表吗?,以便我可以在我的代码中识别它们。 在将值写入单元格之前可以引用字符串是一种解决方法吗? – 2010-03-17 22:31:02

+0

检查Excel的帮助文件。不,你不能引用。 – AMissico 2010-03-18 00:01:12

+0

我在报价中放置了非法内容,因为没有什么特别非法的,本身,它只是一些字符串可能会被误解(例如$ A101或某些XL函数名称)您可以在清空数据的代码周围放置TRY CATCH进入单元格,但您可能会收到一个错误,但一开始就是正确的但没有意义。这可能是因为您可以强制目标单元格的格式只接受STRING,从而“关闭”XL解析器。 – tobrien 2010-03-18 12:07:49