09.01.2018, 12:53 | #1 |
Участник
|
OXML не могу получить get_NumberingFormats()
Добрый день всем. Столкнулся со следующей проблемой:
Формирую отчёт в Excel посредством класса XMLExcelDocument_RU. Отчёт динамический поэтому от шаблона пришлось уйти. По некоторым ячейкам нужно произвести форматирования как числовое значение по шаблону "#.00;-#.00". Решил написать свой метод в классе OxmlWorkBook_RU по аналогии с существующими методами. но столкнуля со странной ошибкой, не возвращается get_NumberingFormats(). Точнее возвращается null. X++: stylesPart = workbookPart.get_WorkbookStylesPart(); styleSheet = stylesPart.get_Stylesheet(); numberingFormats = styleSheet.get_NumberingFormats(); Но тогда файл формируется кривой и Excel-ем не открывается. Кто разбирался с такими вещами? Ax2012. Последний раз редактировалось raniel; 09.01.2018 в 12:56. Причина: уточнение версии |
|
09.01.2018, 15:26 | #2 |
Участник
|
С этой ошибкой не сталкивался не могу ничего сказать, но в качестве примера может быть вам поможет использование OpenXml Reflection, сделать файл вручную и посмотреть какой код сгенерит OpenXml Reflection, он вроде бы есть в Open XML SDK. Кроме того, возможно в styleSheet нет узла NumberingFormats - вы пробовали переименовать ексель в zip и посмотреть что внутри?
|
|
|
За это сообщение автора поблагодарили: raniel (1). |
10.01.2018, 07:11 | #3 |
Участник
|
Цитата:
Сообщение от VORP
С этой ошибкой не сталкивался не могу ничего сказать, но в качестве примера может быть вам поможет использование OpenXml Reflection, сделать файл вручную и посмотреть какой код сгенерит OpenXml Reflection, он вроде бы есть в Open XML SDK. Кроме того, возможно в styleSheet нет узла NumberingFormats - вы пробовали переименовать ексель в zip и посмотреть что внутри?
|
|
10.01.2018, 08:41 | #4 |
Участник
|
Если я правильно понимаю, то если есть хоть одна ячейка в шаблоне в которой задано форматирование, то узел будет. А в пустом файле ексель нету вообще ничего, даже строчек - там всё как бы по умолчанию. То есть надо либо использовать шаблон, если не подходит добавлять вручную, если возникнут какие то проблемы - можно посмотреть через Reflection.
|
|
10.01.2018, 09:04 | #5 |
Участник
|
А можно поподробнее, как это через Reflection смотреть?
Насчёт стилей. Они должны быть, т.к. отчёт я заполняю не в пустой файл, шаблон "рыбу" я всё же использую, только без именованных разделов Последний раз редактировалось raniel; 10.01.2018 в 09:22. |
|
11.01.2018, 12:47 | #6 |
Участник
|
Ну есть ли в шаблоне какие то ячейки с заданными стилями - если есть то в ячейке в атрибуте, кажется, прописывается ссылка на стиль в таблице стилей, а сама таблица хранится в спициальном part - Отдельном xml файле внутри екселя. Если нет ни одной ячейки с форматом отличным от дефолтного, можно просто её создать.
Reflection вроде бы был включен в Open XML SDK, который можно скачать бесплатно. Может быть он называется Productivity Tool, не помню уже. Выбираешь документ, а он выдаёт C# код который его генерит с нуля. |
|