AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.01.2018, 12:53   #1  
raniel is offline
raniel
Участник
Аватар для raniel
 
230 / 11 (1) +
Регистрация: 20.10.2006
? 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();
Пытался создавать свой numberingFormats спомощью функции styleSheet.set_NumberingFormats();
Но тогда файл формируется кривой и Excel-ем не открывается.
Кто разбирался с такими вещами?
Ax2012.

Последний раз редактировалось raniel; 09.01.2018 в 12:56. Причина: уточнение версии
Старый 09.01.2018, 15:26   #2  
VORP is offline
VORP
Участник
 
113 / 85 (3) ++++
Регистрация: 26.05.2006
С этой ошибкой не сталкивался не могу ничего сказать, но в качестве примера может быть вам поможет использование OpenXml Reflection, сделать файл вручную и посмотреть какой код сгенерит OpenXml Reflection, он вроде бы есть в Open XML SDK. Кроме того, возможно в styleSheet нет узла NumberingFormats - вы пробовали переименовать ексель в zip и посмотреть что внутри?
За это сообщение автора поблагодарили: raniel (1).
Старый 10.01.2018, 07:11   #3  
raniel is offline
raniel
Участник
Аватар для raniel
 
230 / 11 (1) +
Регистрация: 20.10.2006
Цитата:
Сообщение от VORP Посмотреть сообщение
С этой ошибкой не сталкивался не могу ничего сказать, но в качестве примера может быть вам поможет использование OpenXml Reflection, сделать файл вручную и посмотреть какой код сгенерит OpenXml Reflection, он вроде бы есть в Open XML SDK. Кроме того, возможно в styleSheet нет узла NumberingFormats - вы пробовали переименовать ексель в zip и посмотреть что внутри?
Распаковав файл действительно в styleSheet нет такого узла. Странно конечно всё, по всем примерам он должен быть, более того есть такая функция в аксапте, и к тому же если строить отчёт посредсвам класса XmlExcelReport_RU(в режиме создания отчёта на базе шаблона) то моя функция отрабатывает.
Старый 10.01.2018, 08:41   #4  
VORP is offline
VORP
Участник
 
113 / 85 (3) ++++
Регистрация: 26.05.2006
Если я правильно понимаю, то если есть хоть одна ячейка в шаблоне в которой задано форматирование, то узел будет. А в пустом файле ексель нету вообще ничего, даже строчек - там всё как бы по умолчанию. То есть надо либо использовать шаблон, если не подходит добавлять вручную, если возникнут какие то проблемы - можно посмотреть через Reflection.
Старый 10.01.2018, 09:04   #5  
raniel is offline
raniel
Участник
Аватар для raniel
 
230 / 11 (1) +
Регистрация: 20.10.2006
А можно поподробнее, как это через Reflection смотреть?
Насчёт стилей. Они должны быть, т.к. отчёт я заполняю не в пустой файл, шаблон "рыбу" я всё же использую, только без именованных разделов

Последний раз редактировалось raniel; 10.01.2018 в 09:22.
Старый 11.01.2018, 12:47   #6  
VORP is offline
VORP
Участник
 
113 / 85 (3) ++++
Регистрация: 26.05.2006
Ну есть ли в шаблоне какие то ячейки с заданными стилями - если есть то в ячейке в атрибуте, кажется, прописывается ссылка на стиль в таблице стилей, а сама таблица хранится в спициальном part - Отдельном xml файле внутри екселя. Если нет ни одной ячейки с форматом отличным от дефолтного, можно просто её создать.
Reflection вроде бы был включен в Open XML SDK, который можно скачать бесплатно. Может быть он называется Productivity Tool, не помню уже. Выбираешь документ, а он выдаёт C# код который его генерит с нуля.
Теги
get_numberingformats, oxml

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Creating One Master Menu to Get Just What You Need Blog bot DAX Blogs 0 24.01.2015 16:16
Как получить указатель на отчёт когда пользователь выбрал Печать на принтер в просмотрщике, в форму SysPrintForm? rkorchagin DAX: Программирование 10 17.04.2008 11:59
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:26.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.