Я использую EPPlus (4.5.2.1), и у меня есть вопрос о кодировке XLSX и его основных XML-частях.
Я должен использовать код C # внутри проекта, который распаковывает файл XLSXи затем чтение файла «xl / workbook.xml» с помощью метода LoadXML.
XmlDocument workbook = new XmlDocument();
workbook.LoadXml(UnzipAndGetFile("xl/workbook.xml"));
Этот код работает нормально с файлом XLSX, созданным в Microsoft Excel.
Однако, когда я читаюфайл, созданный с помощью библиотеки EPPlus Я получил следующее исключение:
System.Xml.XmlEception: данные на корневом уровне недействительны.Строка 1, позиция 1.
После некоторых исследований я обнаружил, что файлы XML, созданные библиотекой EPPlus, используют UTF-8 с кодировкой спецификации.Напротив, файл, созданный из Excel, кодируется с помощью UTF-8 без BOM.
Короче говоря, BOM вызывает исключение.
Я мог проверить иудалите спецификацию, если я нашел ее в файлах XML, но у меня есть следующий вопрос:
Вопросы:
Можно ли указать кодировку UTF-8 при сохранениифайл XLSX с EPPlus?(то есть: UTF-8 без спецификации или UTF-8 с спецификацией)
Почему EPPlus использует UTF-8 + BOM, а Excel использует UTF-8 без спецификации?
Определено ли в стандарте OOXML (Office Open XML) использование UTF-8 + BOM?