【问题标题】:Save Xml in an Excel cell value causes ComException在 Excel 单元格值中保存 Xml 会导致 ComException
【发布时间】:2011-01-27 22:58:03
【问题描述】:

我正在尝试将对象 (Class1) 保存为单元格值中的字符串。我的问题是我有时会遇到 ComException:

HRESULT: 0x8007000E (E_OUTOFMEMORY)

(这是一种随机但我还没有确定任何特定模式)当我将值写入单元格时。欢迎任何想法

出于说明目的: 令 Class1 为要转换为 Xml 字符串的类。 (请注意,我删除了字符串开头的 xml 声明以避免出现前导码 - 不可打印字符)

HL690375

Class1 myClass = new Class1();
此类被转换为字符串 s。 s= ConvertObjectToXmlString(myClass);
然后将 s 分配给一个单元格
范围 r = Application.ActiveCell;
r.Value2 = s;

注意: (1) 如果字符串太大,我将其限制为 32000 个字符并将字符串拆分为 32000 个字符的块并将这些块保存在多个单元格中。
(2) 在添加到单元格之前,我不引用字符串。我需要吗?如果可以的话怎么做?
(3) 所有对象内容均为英文。
(4) C# 代码示例会很棒,但 VB.net 代码可以。

【问题讨论】:

  • 在每次使用时记录字符串的内容。发生异常时,将记录的值与以前的值进行比较,看看是否出现任何模式。

标签: c# vb.net excel automation


【解决方案1】:

您创建的字符串有时可能包含“非法”字符...例如 Excel 试图将其转换为另一个单元格位置的 $...它可能不完全是 $,但您会得到想法。

【讨论】:

  • 你知道我在哪里可以找到“非法”字符列表吗?以便我可以在我的代码中识别它们。可以在将值写入单元格之前引用字符串是一种解决方法吗?
  • 查看 Excel 的帮助文件。不,你不能引用。
  • 我在引号中放置了非法内容,因为没有什么特别非法的,就其本身而言,只是某些字符字符串可能被误解(即 $A101 或某些 XL 函数名称)您可以放置​​一个 TRY CATCH围绕将数据清空到单元格中的代码,但您可能会得到一个正确但一开始没有意义的错误。您可能可以强制目标单元格的格式只接受字符串,从而“关闭”XL 解析器。
  • 让我检查一下,我会回复你
猜你喜欢
  • 1970-01-01
  • 2023-03-26
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多