Показать сообщение отдельно
Старый 04.09.2020, 18:52   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Специальные именованные диапазоны Excel и работа с ними в DAX2012 при помощи OXML
Для использования в наследнике XmlExcelReport_RU стандартным образом создаю файл, который загружаю в ресурс, на его основе формируется отчет.
Мне нужно чтобы определенная строка повторялась на каждой странице при печати, для этого в настройках параметров страницы задаю «Сквозные строки». В диспетчере имен появилась строка с именем «Заголовки для печати» и нужным диапазоном.
Файл сохраняется, в его структуре в workbook.xml в узле <definedNames> появился узел
X++:
<definedName name="_xlnm.Print_Titles" localSheetId="1">!$5:$5</definedName>
То есть, все хорошо, открываем этот файл, в диспетчере имен так и есть «Заголовки для печати», в параметрах страницы сквозные строки заполнены.
В самом наследнике XmlExcelReport_RU с этим диапазоном не делаю вообще ничего. Движок считал из файла-образца (ну по стандарту – из ресурса сохранил во временный файл, открыл его, обработал) в том числе движок, поняв что есть именованный диапазон _xlnm.Print_Titles, при завершении работы (сохранении сформированного файла в темповый) именно с этим же именем и диапазоном и создал нужный узел.
Но при открытии параметров страницы оказалось, что поле сквозных строк пустое. Диспетчер имен показывает, что есть именованный диапазон, но он теперь называется не «Сквозные строки», а «Print_Titles». Вроде бы логично, именно с таким наименованием он сохранен в файле, но теперь Excel не воспринимает его как специальный диапазон для сквозных строк. В структуре файла все так же: в узле <definedNames> есть узел
X++:
<definedName name="_xlnm.Print_Titles" localSheetId="1">!$5:$5</definedName>
Делаю уже в файле результата опять настройку сквозных строк, в диспетчере имен появляется «Сквозные строки», имя «Print_Titles» остается, сохраняю файл, в его структуре теперь два узла:
X++:
<definedName name="_xlnm.Print_Titles" localSheetId="1">!$5:$5</definedName>
<definedName name="Print_Titles" localSheetId="1">!$5:$5</definedName>
Есть подозрение, что все это из-за локализованного Excel, но что с этим делать? Файл прошел через движок работы с OpenXML DAX2012 и сломался. Как заставить сформированный файл использовать специальные именованные диапазоны из образца?