![]() |
#1 |
Участник
|
![]()
Добрый день всем. Столкнулся со следующей проблемой:
Формирую отчёт в 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. Причина: уточнение версии |
|
![]() |
#2 |
Участник
|
С этой ошибкой не сталкивался не могу ничего сказать, но в качестве примера может быть вам поможет использование OpenXml Reflection, сделать файл вручную и посмотреть какой код сгенерит OpenXml Reflection, он вроде бы есть в Open XML SDK. Кроме того, возможно в styleSheet нет узла NumberingFormats - вы пробовали переименовать ексель в zip и посмотреть что внутри?
|
|
|
За это сообщение автора поблагодарили: raniel (1). |
![]() |
#3 |
Участник
|
Цитата:
Сообщение от VORP
![]() С этой ошибкой не сталкивался не могу ничего сказать, но в качестве примера может быть вам поможет использование OpenXml Reflection, сделать файл вручную и посмотреть какой код сгенерит OpenXml Reflection, он вроде бы есть в Open XML SDK. Кроме того, возможно в styleSheet нет узла NumberingFormats - вы пробовали переименовать ексель в zip и посмотреть что внутри?
|
|
![]() |
#4 |
Участник
|
Если я правильно понимаю, то если есть хоть одна ячейка в шаблоне в которой задано форматирование, то узел будет. А в пустом файле ексель нету вообще ничего, даже строчек - там всё как бы по умолчанию. То есть надо либо использовать шаблон, если не подходит добавлять вручную, если возникнут какие то проблемы - можно посмотреть через Reflection.
|
|
![]() |
#5 |
Участник
|
А можно поподробнее, как это через Reflection смотреть?
Насчёт стилей. Они должны быть, т.к. отчёт я заполняю не в пустой файл, шаблон "рыбу" я всё же использую, только без именованных разделов Последний раз редактировалось raniel; 10.01.2018 в 09:22. |
|
![]() |
#6 |
Участник
|
Ну есть ли в шаблоне какие то ячейки с заданными стилями - если есть то в ячейке в атрибуте, кажется, прописывается ссылка на стиль в таблице стилей, а сама таблица хранится в спициальном part - Отдельном xml файле внутри екселя. Если нет ни одной ячейки с форматом отличным от дефолтного, можно просто её создать.
Reflection вроде бы был включен в Open XML SDK, который можно скачать бесплатно. Может быть он называется Productivity Tool, не помню уже. Выбираешь документ, а он выдаёт C# код который его генерит с нуля. |
|