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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.09.2013, 01:56   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Thumbs down Open XML SDK генерит файлы, которые не открываются после пересохранения в Excel 2010
Коллега тут столкнулся вот с какой проблемой:
  • в AX 2012 есть отчет-наследник класса XMLExcelReport, генерящий Excel-файл с помощью Open XML SDK
  • есть корпоративная сеть, где у всех стоит Office 2010 (14.7106.5001)
  • сгенерированный отчет нормально открывается в Excel 2010, но...
  • если затем файл либо просто сохранить, либо "сохранить как" в формате xlsx, то он перестает открываться: Excel ругается, что файл поврежден.
При этом:
  • если сохранить файл, скажем, в формате xlsb, то он нормально открывается
  • в Office 2013 таких проблем не возникает, но...
  • переходить в данном конкретном примере на новую версию Office никто в ближайшее время не будет
В итоге получился отчет, который генерит файл, "бьющися" после первого же пересохранения в Excel 2010 и более не открывающийся.
При ближайшем рассмотрении обнаружилось вот что: в исходном сгенеренном файле, если его распаковать, workbook.xml выглядит в чуть сокращенном виде так:
PHP код:
<x:workbook xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"
            
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
            
xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<
x:sheets>
 <
x:sheet name="Sheet2" sheetId="2" r:id="rId1" />
</
x:sheets>
<
x:extLst>
 <
x:ext xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main" uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}">
  <
x15:workbookPr chartTrackingRefBase="1" />
 </
x:ext>
</
x:extLst>
</
x:workbook
А после пересохранения - уже вот так:
PHP код:
<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
          
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<
sheets>
 <
sheet name="Sheet2" sheetId="2" r:id="rId1"/>
</
sheets>
<
extLst>
 <
x:ext xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main" uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}">
  <
x15:workbookPr chartTrackingRefBase="1"/>
 </
x:ext>
</
extLst>
</
workbook
Тут видно, что Excel выкинул упоминание о префиксе "x" и пространстве имен, которое им идентифицируется, - везде, кроме элемента extLst, и при повторном открытии файла Excel как раз и не понимает, к чему же теперь относится нигде не объявленный префикс "x". Если убрать этот префикс в workbook.xml и styles.xml, то файл начинает открываться нормально. Пока из найденных в инете советов - только удалять напрочь этот extList... Понятно, что проблема в Excel 2010, а не в Аксапте и не в Open XML SDK, тем не менее, если у кого еще вылезет - хотя бы будет известно, куда копать.
За это сообщение автора поблагодарили: sukhanchik (10), Logger (10), Krasher (1), MikeR (5), handy-comp (1).
Теги
open xml, xmlexcelreport

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вывод значимых знаков после точки в Excel. Ax 3, SP3 sobik DAX: Программирование 2 27.02.2012 12:53
axsdkupdates: MS Dynamics AX 2009 SDK Updated – Mar 2010 Blog bot DAX Blogs 0 22.04.2011 17:11
Формулы в Excel 2010 akvi DAX: Функционал 14 26.08.2010 23:49
PatrickChua: XML serialization Blog bot DAX Blogs 0 04.05.2009 14:05
Файлы XML, CSV, HTML в кодировке Unicode EVGL DAX: База знаний и проекты 3 16.01.2009 14:23

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:51.