Re[5]: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: Gollum Россия  
Дата: 15.10.09 09:01
Оценка: 1 (1)
Здравствуйте, G0ga, Вы писали:

G>И таких моментов достаточно. При этом в программе нет ни единого "голого" XML кода исключительно все на классах OpenXMLSDK.


Контент-тайп стандартный (кстати в обоих приведенных частях он присутствует), а в экселевском файле по умолчанию добавлены еще части отвечающие за стили, оформление, таблицу общих строковых констант и прочую хрень. В опен офисе видимо просто это убирают по умолчанию.

Собственно, тут есть две альтернативы.

1) Если OpenXml SDK сгенерировал файл, отвечающий стандарту OpenXML, то виноват не он, надо писать багрепорт в OpenOffice. На мой взгляд это самый вероятный вариант.

2) Если сгенерированный файл не отвечает этому стандарту — то надо писать багрепорт в Microsoft.

Если хочется найти причину — нужно задаться конкретной проблемой. Попробовать сгенерировать пустой документ, если опен офис откроет его — формируем с базовым наполнением, и так далее пока не найдем ошибку. Дальнейшее решение зависит от результатов.

Пытаться разобраться кто из продуктов более стандартен и более правильно формуирует файлы, как мне кажется, тут бесполезно.

Проблема OpenXml — он очень загроможденный и сложный, лично мне он не нравится. Но тут уж приходится кушать что дают.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Eugene Agafonov on the .NET

Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: G0ga  
Дата: 12.10.09 13:28
Оценка:
Мне необходимо заключение по вопросу(очень нужно завтра сдавать тему, а времени и сил на мозговую атаку не хватает):
Невозможно открыть документ .xlsx приложением OOo 3.1.1.
Документ подготовлен с использованием OpenXMLSDK v2.0.
При этом MSExcel 2007 открывает данный файл корректно.
Re: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: Gollum Россия  
Дата: 12.10.09 16:06
Оценка:
Здравствуйте, G0ga, Вы писали:

G>Невозможно открыть документ .xlsx приложением OOo 3.1.1.

G>Документ подготовлен с использованием OpenXMLSDK v2.0.
G>При этом MSExcel 2007 открывает данный файл корректно.

Ну, это пробемы опен офиса. Вообще, в состав OpenXml SDK входят тулзы Document Reflector и Document Diff — можно поизучать документ в них.

Можно попробовать делать так — брать документ из опенофиса как шаблон, менять в нем нужные места, и записывать. Это если его SDK осилит, и там не будет ошибок.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Eugene Agafonov on the .NET

Re[2]: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: G0ga  
Дата: 12.10.09 20:29
Оценка:
Здравствуйте, Gollum!
Судя по вашим рассуждениям, у вас не большой опыт работы с OpenOfficeSDK.
Эту проблему я решал комплексно со всех "сторон".
Я сначала создал в MSOffice документ, потом с помощью некоторых утилит, позаимствованных у MS, произвёл анализ с одновременным прочтением ECMA-376(для лучшего понимания). Но увы, получить одинаковые "базовые моменты" увы не удалось. А некоторые даже создать программным способом не представилось возможным.
Была проведена работа и со стороны OOo, путем ручного редактирования файла, в надежде получить тот минимум необходимый для понимания содержимого. В этом направлении я прошел дальше всех, я получил на экране excelевский лист с заданным названием, но увы данных там не было.
Но самое грустное — огромное различие между файлом созданным программным способом и тем-же самым файлом сохраненным в MSExcel. Анализируя эти два файла приходишь в недоумение почему одни и те же данные занимают во втором случае объем в два с лишним раза больше, чем в первом(это при условии, что файлы в обоих случаях представляют собой архив).
Создается неправильное впечатление о программных продуктах компании MS.
Заранее прошу извинения если сказал, что-то грубое и нелестное в ваш адрес. Просто "накипело". Это уже второй проект с использованием SDK первый был связан с MSWord, но там было проще, там отсутствовал OOo. Там увы тоже все не "гладко".
Re[3]: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: Poul_Ko Казахстан  
Дата: 13.10.09 03:05
Оценка:
Здравствуйте, G0ga, Вы писали:

G>Я сначала создал в MSOffice документ, потом с помощью некоторых утилит, позаимствованных у MS, произвёл анализ с одновременным прочтением ECMA-376(для лучшего понимания). Но увы, получить одинаковые "базовые моменты" увы не удалось. А некоторые даже создать программным способом не представилось возможным.


Минимальный набор утилит — это архиватор и блокнот.

G>Была проведена работа и со стороны OOo, путем ручного редактирования файла, в надежде получить тот минимум необходимый для понимания содержимого. В этом направлении я прошел дальше всех, я получил на экране excelевский лист с заданным названием, но увы данных там не было.


Необходимый минимум есть в ECMA-376, Part 1 и 2.

G>Но самое грустное — огромное различие между файлом созданным программным способом и тем-же самым файлом сохраненным в MSExcel. Анализируя эти два файла приходишь в недоумение почему одни и те же данные занимают во втором случае объем в два с лишним раза больше, чем в первом(это при условии, что файлы в обоих случаях представляют собой архив).


Есть такое. Когда сохраняешь простой документ из MS Office, то в нём содержится гораздо больше информации, чем минимально нужно.

Мой вам совет — берёте за основу ECMA-376 Part 1, глава (informative) Primer, раздел Introduction to SpreadsheetML (для начала желательно ещё ознакомиться с OPC) и делаете по нарастающей — сначала просто пустой документ, потом заполняете ячейки данными, потом форматирование, и т.д. и т.п. Все манипуляции выполняете в каком-нибудь XML-редакторе, например, в Visual Studio, файлы пакуете вашим любимым архиватором в zip и переименовываете в xlsx.
Brainbench transcript #6370594
Re[4]: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: G0ga  
Дата: 13.10.09 04:41
Оценка:
Здравствуйте, Poul_Ko, Вы писали:

P_K>Здравствуйте, G0ga, Вы писали:


G>>Я сначала создал в MSOffice документ, потом с помощью некоторых утилит, позаимствованных у MS, произвёл анализ с одновременным прочтением ECMA-376(для лучшего понимания). Но увы, получить одинаковые "базовые моменты" увы не удалось. А некоторые даже создать программным способом не представилось возможным.


P_K>Минимальный набор утилит — это архиватор и блокнот.


G>>Была проведена работа и со стороны OOo, путем ручного редактирования файла, в надежде получить тот минимум необходимый для понимания содержимого. В этом направлении я прошел дальше всех, я получил на экране excelевский лист с заданным названием, но увы данных там не было.


P_K>Необходимый минимум есть в ECMA-376, Part 1 и 2.


G>>Но самое грустное — огромное различие между файлом созданным программным способом и тем-же самым файлом сохраненным в MSExcel. Анализируя эти два файла приходишь в недоумение почему одни и те же данные занимают во втором случае объем в два с лишним раза больше, чем в первом(это при условии, что файлы в обоих случаях представляют собой архив).


P_K>Есть такое. Когда сохраняешь простой документ из MS Office, то в нём содержится гораздо больше информации, чем минимально нужно.


P_K>Мой вам совет — берёте за основу ECMA-376 Part 1, глава (informative) Primer, раздел Introduction to SpreadsheetML (для начала желательно ещё ознакомиться с OPC) и делаете по нарастающей — сначала просто пустой документ, потом заполняете ячейки данными, потом форматирование, и т.д. и т.п. Все манипуляции выполняете в каком-нибудь XML-редакторе, например, в Visual Studio, файлы пакуете вашим любимым архиватором в zip и переименовываете в xlsx.


Все так и было. Вопрос в другом — созданный файл не открывает OOo 3.1.
Re[3]: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: Gollum Россия  
Дата: 13.10.09 10:55
Оценка:
Здравствуйте, G0ga, Вы писали:

G>Судя по вашим рассуждениям, у вас не большой опыт работы с OpenOfficeSDK.


Забавно. С OpenOfficeSDK действительно я не работал. Я работал с OpenXML SDK обеих версий.

G>Эту проблему я решал комплексно со всех "сторон".

G>Я сначала создал в MSOffice документ, потом с помощью некоторых утилит, позаимствованных у MS, произвёл анализ с одновременным прочтением ECMA-376(для лучшего понимания). Но увы, получить одинаковые "базовые моменты" увы не удалось. А некоторые даже создать программным способом не представилось возможным.

Т.е. как раз то, что посоветовал я, несмотря на мой небольшой опыт

G>Была проведена работа и со стороны OOo, путем ручного редактирования файла, в надежде получить тот минимум необходимый для понимания содержимого. В этом направлении я прошел дальше всех, я получил на экране excelевский лист с заданным названием, но увы данных там не было.


Так чтобы данные появились, надо с помощью SDK открыть шаблонный документ, и поместить эти самые данные в нужное место документа.

G>Но самое грустное — огромное различие между файлом созданным программным способом и тем-же самым файлом сохраненным в MSExcel. Анализируя эти два файла приходишь в недоумение почему одни и те же данные занимают во втором случае объем в два с лишним раза больше, чем в первом(это при условии, что файлы в обоих случаях представляют собой архив).

G>Создается неправильное впечатление о программных продуктах компании MS.

А вот у меня как-то получилось так, что такого различия не наблюдалось. Видимо все-таки виноват не программный продукт от MS, а то, как его использовали.

G>Заранее прошу извинения если сказал, что-то грубое и нелестное в ваш адрес. Просто "накипело". Это уже второй проект с использованием SDK первый был связан с MSWord, но там было проще, там отсутствовал OOo. Там увы тоже все не "гладко".


OpenXML SDK 2.0 по моим впечатлениям — это по схеме XMLей тупо сгенерировали набор классов. В текущем состоянии его крайне неудобно использовать, однако работу свою он делает, и документы генерирует исправно. Если есть конкретные вопросы — спрашивайте.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Eugene Agafonov on the .NET

Re[4]: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: G0ga  
Дата: 13.10.09 13:13
Оценка:
Здравствуйте, Gollum, Вы писали:

Если есть время прочтите и дайте ответ на пару моментов.

Приведу маленькие примеры различия
1. Это оригинальная версия файла [Content_Types].xml
<?xml version="1.0" encoding="utf-8"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
    <Default Extension="xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" />
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />
    <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml" />
    <Override PartName="/xl/worksheets/sheet.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml" />
</Types>

Это версия того-же файла, но после сохранения через MSExcel
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
    <Override PartName="/xl/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
    <Override PartName="/xl/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"/>
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
    <Default Extension="xml" ContentType="application/xml"/>
    <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
    <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
    <Override PartName="/xl/worksheets/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
    <Override PartName="/xl/sharedStrings.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"/>
    <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
</Types>

Строки выделенные я опускаю т.к. не формирую. А вот строки выделенные это собственно повод поговорить.
Строка <Default Extension="xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" /> откуда взят такой ContentType?
Почему нет сроки <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>? Хотя сам файл docProps/app.xml присутствует и содержит данные. Данный раздел формируется следующим кодом.
SpreadsheetDocument _exelDocument = SpreadsheetDocument.Create(fileToExport, SpreadsheetDocumentType.Workbook);
ExtendedFilePropertiesPart _filePropertyPart = _exelDocument.AddExtendedFilePropertiesPart();
_filePropertyPart.Properties = new DocumentFormat.OpenXml.ExtendedProperties.Properties();
_filePropertyPart.Properties.Application = new DocumentFormat.OpenXml.ExtendedProperties.Application("Microsoft Excel");
_filePropertyPart.Properties.DocumentSecurity = new DocumentFormat.OpenXml.ExtendedProperties.DocumentSecurity("0");
_filePropertyPart.Properties.ScaleCrop = new DocumentFormat.OpenXml.ExtendedProperties.ScaleCrop("false");
_filePropertyPart.Properties.LinksUpToDate = new DocumentFormat.OpenXml.ExtendedProperties.LinksUpToDate("false");
_filePropertyPart.Properties.SharedDocument = new DocumentFormat.OpenXml.ExtendedProperties.SharedDocument("false");
_filePropertyPart.Properties.HyperlinksChanged = new DocumentFormat.OpenXml.ExtendedProperties.HyperlinksChanged("false");
_filePropertyPart.Properties.AppVersion = new DocumentFormat.OpenXml.ExtendedProperties.AppVersion("12.0000");
_filePropertyPart.Properties.Save();

Последствия данного эффекта OOo постоянно спрашивает какого типа файл "мы" открываем. Хотя в свойствах чётко прописано ...

2. Смотрим дальше. Файл xl/_rels/workbook.xml.rels
<?xml version="1.0" encoding="utf-8"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="/xl/worksheets/sheet.xml" Id="R5676a2e54359472c" />
</Relationships>

Это версия того-же файла, но после сохранения через MSExcel
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
    <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
    <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
    <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>
    <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>
</Relationships>

Выделенные фрагменты говорят о явно разных путях.

И таких моментов достаточно. При этом в программе нет ни единого "голого" XML кода исключительно все на классах OpenXMLSDK.
Re[6]: Вопрос к гуру MSOffice и OpenXMLSDK v2.0
От: G0ga  
Дата: 18.10.09 21:25
Оценка:
Здравствуйте, Gollum, Вы писали:

...
G>Проблема OpenXml — он очень загроможденный и сложный, лично мне он не нравится. Но тут уж приходится кушать что дают.

Я бы добавил — нелогичный.
В любом смысле спасибо, что выслушали мои "нападки".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.