27.09.2013, 01:56 | #1 |
Участник
|
Open XML SDK генерит файлы, которые не открываются после пересохранения в Excel 2010
Коллега тут столкнулся вот с какой проблемой:
При ближайшем рассмотрении обнаружилось вот что: в исходном сгенеренном файле, если его распаковать, workbook.xml выглядит в чуть сокращенном виде так: PHP код:
PHP код:
|
|
|
За это сообщение автора поблагодарили: sukhanchik (10), Logger (10), Krasher (1), MikeR (5), handy-comp (1). |
27.09.2013, 10:19 | #2 |
Участник
|
А можно как-то повлиять на Open XML SDK чтобы он сразу не генерил такого содержимого ?
|
|
27.09.2013, 10:30 | #3 |
Участник
|
Версия Open XML SDK 2.5 ?
Так как расширение формата файла Office 2013 расширяет члены элемента <extLst> , которые не имеют все элементы члена, классов Open XML SDK 2.0, связанных с пустым <extLst> (например DocumentFormat.OpenXml.Spreadsheet.PivotFilter:ExtensionList) обновляются новые варианты классов ExtensionListПакет SDK Open XML версии 2.5 (например DocumentFormat.OpenXml.Spreadsheet.PivotFilter:PivotFilterExtensionList). Новый класс ExtensionList , включая новые Off Open XML дочерний элемент заменяются следующие пустой ExtensionList в каждом классе. Вот тут прочел: http://msdn.microsoft.com/ru-ru/libr...ffice.15).aspx |
|
27.09.2013, 10:50 | #4 |
Участник
|
Версия Open XML SDK 2.0.5022. Эту статью про версию 2.5 я тоже видел, но суть ее в том, что версия 2.0 генерит в большинстве своем пустые <extLst>, а 2.5 - уже непустые с новыми фишками Office 2013, однако, от этого не легче: даже пустой <extLst> пересохраняется в Office 2010 криво, из-за чего Excel-файл потом не открывается.
|
|
27.09.2013, 11:26 | #5 |
Участник
|
Цитата:
Сообщение от gl00mie
Версия Open XML SDK 2.0.5022. Эту статью про версию 2.5 я тоже видел, но суть ее в том, что версия 2.0 генерит в большинстве своем пустые <extLst>, а 2.5 - уже непустые с новыми фишками Office 2013, однако, от этого не легче: даже пустой <extLst> пересохраняется в Office 2010 криво, из-за чего Excel-файл потом не открывается.
|
|
18.07.2014, 14:18 | #6 |
MCP
|
Добавлю свои 5 копеек.
Мы с коллегой столкнулись с похожей проблемой. Исходная ситуация:
Отчет создается с помощью класса XmlExcelReport_Invoice4Paym_RU. При построении отчета используется механизм вставки разрывов страниц. В случае добавления хотя бы одного pageBreak выводится сообщение: Цитата:
Метод "add" в COM-объекте класса "Workbooks" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Add method of Workbooks class failed.
Невозможно создать рабочую книгу Microsoft Office Excel. При более детальном изучении оказалось, что если pageBreak не вставляется (т.е. отчет помещается на 1 страницу) - все работает отлично! Решение: Если кто-то столкнется - с такой же ошибкой и шаблоном отчета с картинкой - просто удалите её и попробуйте перезапустить ваш отчет Вывод картинки через openXML в имеющихся обертках OXML в стандарте не реализован (видимо для стандартных отчетов не понадобился). Если все же необходимо выводить картинку в отчет - я нашел 2 пути: 1. В классе XmlExcelReport_RU в методе run() можно перехватить COM объект Excel и вывести картинку через COM: Image & Excel или Быстрый способ вывода данных в Excel с картинками 2. Можно доработать семейство OXML, добавив обработку картинок. Я этим путем не пошел т.к. он показался довольно трудоемким. Но при реализации можно опираться на статью MSDN insert-images-into-specific-excel-cells-using-openxml Последний раз редактировалось kornix; 18.07.2014 в 14:22. |
|
|
За это сообщение автора поблагодарили: leva (2), gl00mie (3), S.Kuskov (3). |