【发布时间】:2017-03-29 13:17:10
【问题描述】:
我有一个字符串,我想用 C# 中的 openxml 组件将其导出到 excel 文件中。我的文本有 '\u001f' 字符,而 openxml 有这个字符错误。错误文本:“十六进制值 0x1f,是无效字符”。
我将该测试直接复制到excel,没有问题,复制成功。
OpenXml 是否有解决此问题的配置或如何解决此问题。
谢谢。
【问题讨论】:
-
请显示您尝试过的代码
我有一个字符串,我想用 C# 中的 openxml 组件将其导出到 excel 文件中。我的文本有 '\u001f' 字符,而 openxml 有这个字符错误。错误文本:“十六进制值 0x1f,是无效字符”。
我将该测试直接复制到excel,没有问题,复制成功。
OpenXml 是否有解决此问题的配置或如何解决此问题。
谢谢。
【问题讨论】:
您需要使用_xHHHH_ 格式编写它,其中H 表示十六进制字符。在您的特定实例中,您需要将该值设置为 "_x001F_"。
来自Cell Value 的文档:
此元素的可能值由 ST_Xstring 简单类型(第 22.9.2.19 节)定义。
反过来,ST_Xstring(取自ECMA-376 standard)记录为:
22.9.2.19 ST_Xstring(转义字符串)
支持转义的无效 XML 字符的字符串。 对于 XML 1.0 规范定义的所有不能用 XML 表示的字符,字符 使用 Unicode 数字字符表示转义字符格式 xHHHH 进行转义,其中 H 表示字符值中的一个十六进制字符。 [示例:Unicode 字符 8 是不允许的 在 XML 1.0 文档中,因此必须将其转义为 x0008。结束示例]
【讨论】: