gpt4 book ai didi

c# - OOXML SDK非法字符替换

转载 作者:太空宇宙 更新时间:2023-11-03 22:13:19 24 4
gpt4 key购买 nike

我在使用 MS 的 Open XML SDK 2.0 创建 XLSX 文档时遇到问题。

我的问题是我需要在 Excel 工作表中显示其中一些非法字符,但如果我只是将它们添加到工作表中,文档将不会加载。

我正在使用这个功能

    private static string ProcessString(string str)
{
return System.Security.SecurityElement.Escape(str);
}

这将给我汤姆的球而不是汤姆的球。 (好吧,我还没有弄清楚如何获得后者,因为生成的 excel 无法打开。)

有人知道如何在 Excel 工作表中使用 OOXML 显示非法 XML 字符吗?

编辑:
在我用来创建文本单元格的函数中是:

private static Cell CreateTextCell(string header, UInt32 index, string text)
{
var c = new Cell { DataType = CellValues.String, CellReference = header + index };
var cellValue = new CellValue(text);
c.Append(cellValue);
return c;
}

我知道它与非法字符有关,因为当我没有在我的文本中包含特定字段时它起作用,然后当我包含它时,Excel 会给我一个解析器错误和一个空白文档。

我处理的文本也恰好包含 HTML 标签。

附言。大声笑,我刚刚注意到使用的 Markdown 解析了我的 HTML 转义,使我的示例看起来很荒谬。

编辑 2:

一些输入示例:

  • 癌症的复杂性:我们是否在错误的水平上制定有效的干预措施?

  • Kathleen Cuningham Foundation Consortium for Research into Familial Breast 对来自 BRCA1BRCA2 突变阳性家族的突变阴性女性患乳腺癌风险的前瞻性研究癌症 (kConFab)。

  • 种系 BRCA2 突变与侵袭性前列腺癌和不良结果相关。

html 格式基本上就是这样显示在网页上的。我应该去掉基本的格式标签。但更重要的是,我希望加载 excel 文件并转义值是实现此目的的可靠方法。

最佳答案

想一想包含在例如Excel 文件最终以 XML 格式保存。因此,如果您有任何想要保留在文件中的无效 XML 字符,则需要对它们进行转码。这实际上不是 OOXML 问题 - 这是 XML 问题。

所以如果你有这样的输入文本

 Germline <em>BRCA2</em> mutations correlate with aggressive prostate cancer and adverse outcome.

您必须将尖括号转换为

 Germline & lt;em& gt;BRCA2& lt;/em& gt; mutations correlate with aggressive prostate cancer and adverse outcome.

(添加空格以说明括号)

参见 String escape into XML有几种方法可以做到这一点。

此外,要了解 Microsoft Office 如何执行此操作,请将麻烦的文本添加到 Excel 文档并保存。然后用OpenXml SDK工具(SDK自带)反射(reflect)文件,看看是怎么做到的。

关于c# - OOXML SDK非法字符替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5875322/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com