excel - XSLT 输出 BOM 字符在 Excel 中可见

标签 excel xslt byte-order-mark

我的 Java EE Web 应用程序使用 XSLT 转换来生成 CSV 报告。 如果我指定“UTF-16”作为 XSLT 上的编码(这似乎是处理 XML 中重音字符的唯一方法),那么我会在 CSV 输出的开头得到一个字节顺序标记字符

据我了解,这是正确的行为。问题是,如果在 Excel 中打开 CSV,则此 BOM 字符可见(显示为:þÿ),但如果在正确的文本编辑器中打开它,则不可见;)

如何隐藏或省略此字符,使其在 Excel 中打开文件时不可见?

最佳答案

您忘记指定您正在使用的 XSLT 版本。

如果您使用的是 XSLT 2.0,则可以使用 xsl:output 抑制 BOM元素。例如...

<xsl:output method="xml" byte-order-mark="no" encoding="UTF-16" indent="yes" omit-xml-declaration="yes" />

如果您使用的是 XSLT 1.0 怎么办?

这里有两个选项:

  1. 升级到 XSLT 2.0
  2. 将 Excel 升级到 2007(有关原因,请参阅 here)

关于excel - XSLT 输出 BOM 字符在 Excel 中可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13292879/

相关文章:

excel:获取当前图表的索引

excel - 更改单元格格式但不更改数字大小?

python - openpyxl 没有归属错误

java - 如何使用 java 搜索 docx 文件并将其解压缩到给定目录中?

xml - 将 xsl :value-of. .. 放入 CDATA

php - 用UTF-8编码解决BOM

c# - 在 Excel 中使用 VSTO 创建 UDF

xslt - 我应该如何正确使用 XSLT if 语句?

python - 在 Python 中从 gzip 压缩的 CSV 中删除 BOM

c# - 保存 XML 时强制无 BOM