EPPLUS在使用没有BOM的UTF-8编码时保存XLSX文件

时间:2018-10-21 01:27:10

标签: c# utf-8 xlsx epplus epplus-4

我正在使用EPPlus(4.5.2.1),并且对XLSX及其底层XML部分的编码有疑问。

我必须在要解压缩XLSX文件然后使用LoadXML方法读取“ xl / workbook.xml”文件的项目中使用C#代码。

XmlDocument workbook = new XmlDocument();         
workbook.LoadXml(UnzipAndGetFile("xl/workbook.xml"));

此代码与使用Microsoft Excel创建的XLSX文件配合使用正常。

但是,当我读取使用EPPlus库创建的文件时,出现以下异常:

  

System.Xml.XmlEception:根级别的数据无效。第1行,位置1。

经过一番调查,我发现EPPlus库创建的XML文件正在使用带有BOM编码的UTF-8。相反,从Excel创建的文件使用UTF-8 没有 BOM进行编码。

简而言之,BOM导致异常。

如果可以在XML文件中找到BOM,则可以检查并删除它,但是我有以下问题。

问题:

  1. 使用EPPlus保存XLSX文件时是否可以指定UTF-8编码? (即:不带BOM的UTF-8或不带BOM的UTF-8)

  2. 为什么EPPlus使用UTF-8 + BOM,而Excel使用UTF-8不使用BOM?

  3. 是否在OOXML(Office Open XML)标准中指定使用UTF-8 + BOM?

0 个答案:

没有答案