|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Если кому-то интересно, пакет создания XML-Excel файлов. Функционал пока только базовый. Пример работы в методе Excel.Document.Test. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2010, 09:45 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н., класса для тестирования нет в наличии ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2010, 12:14 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
d ##class(Excel.Document).Test() ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2010, 14:53 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Там только путь указывается напрямую, поправьте в исходниках метода. В принципе, это практически необкатаный класс, но если есть интерес, могу доработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2010, 14:55 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Еще сейчас разрабатываю ту же фигню для ворда. Но там у самого ворда более сложная структура, классов в полтора раза больше получается и как-то более говнокодисто все. Здесь по сути вся идея в том, чтобы построить дерево объектов, которое при выгрузке в XML становится сразу готорым документом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 06:07 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н., очень интересная работа, в итоге может получится очень даже интересная вещь ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 06:56 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н. , я заинтригован. У тебя есть исходное описани этой xml-структуры? По Экселю и по Ворду? Интересно было бы почитать на русском если есть... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 09:40 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Неа. Беру файл вордовый или экселевский и сохраняю его как XML, дальше смотрю текстовый файл. И по его структуре дорисовываю классы :-) Там правда много необязательных атрибутов и тегов, иногда вообще непонятных. В ворде научился устанавливать параграфы, устанавливать интервал строк, ставить позиции табуляции, менять шрифт текста, атрибуты(подчеркнутый, жирный), выравнивание, работать с колонтитулами (пока только с верхним), ставить разрывы страниц, вставлять картинки. Пока еще не сделал работу с таблицами. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 11:06 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
krvsa, +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 11:30 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
krvsa, этож стандарт Office Open XML от мелкомягких - всего 6000 страничек :). Будет работать начиная с офиса 2003 (если поставить вот это ). Есть еще Open Document Format , но будет открываться с MS Office 2007 SP2. И то (.docx, .xlsx) и другое (.odt,.ods) - обычные zip архивы каталогов с xml файлами. Литературы много, но все на english. Проще делать как Александр, создать шаблон и посмотреть что к чему. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 16:10 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Можно формировать не только данные, но и графики-диаграммы, например ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 16:14 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Вот с графиками-диаграммами облом, с рисунками в экселе тоже труба - при сохранении он просто из файла все это убирает. В ворде картинки можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 19:02 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
doublefintЛитературы много, но все на english. Вот ведь... doublefintПроще делать как Александр, создать шаблон и посмотреть что к чему. Дык устал уже методом тыка... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 19:13 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н. Вот с графиками-диаграммами облом Сделайте шаблон в Excel - 1 лист с данными, 2 лист - вставьте диаграмму на основе данных из первого листа. Сохраните в формате xlsx или OpenDocument. Откройте zip-ом ищите файл chart.xml для xlsx ( или Object 1\content.xml для OpenDocument). Там будут привязки к ячейкам данных. Сформировать такое же достаточно легко. OpenDocument более понятный, все подробно расписано в тегах, но более избыточный. Office OpenXML - труднее соориентироваться что к чему, есть особенности вроде shared и inline строк, но формировать удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 19:57 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
В экселе все достаточно просто. По крайней мере у нас был генератор на уровне OpenRow-CloseRow, но при работе с ним часто программист ошибался и объединенные ячейки пересекались (и другие ошибки тоже были). Эксель говорил "уупс" и файл не открывал. Поэтому я и решил сделать генератор на уровне объектов - тут можно прикрутить валидацию. Получилось достаточно просто. С вордом все иначе. Во-первых, он для меня новый, во-вторых, структура у него значительно сложнее, в-третьих структура у него менее фиксированная. например, в теге <w:r></w:r> может содержаться и текст, и табуляция, и перевод строки и разрыв страницы, и картинка. Но хуже, что это все может содержаться все вместе и причем вперемежку. Ладно, тут я решил для себя, что в этом теге держим только что-то одно, и при каждом шевелении открываем новый. Так работает по-крайней мере, но на каждый тег <w:r> приходится выставлять шрифт и его атрибуты. Для программиста это процесс можно скрыть интерфейсом, но файл немножко распухнет. Фиг с ним, 30кб или 80кб не такая большая разница. Тут еще выяснилось, что в теге <w:sect> могут быть как параграфы <w:p>, так и таблицы <w:tbl>. Как сэмулировать последовательность <w:p><w:p/><w:tbl></w:tbl><w:p><w:p/> мне пока непонятно Попробовал запихать <w:tbl> внутрь <w:p> - вроде работает. Но при этом внутри каждой ячейки таблицы тоже есть параграф <w:p>. В общем, с вордом пока сумбур :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 20:14 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
doublefint, В экселе я делал именно по известной мне уже схеме, т.е. я просто переписал генератор тот, что уже был. И так получилось, что это был формат не xlsx :-) Shared и inline строки даж не знаю что такое. Стыдно должно быть, да? :-) У нас просто достаточно простые потребности к генерации экселевских листов - это просто данные, как-то минимальным образом отформатированные. А вот на в ворде они отрываются, приходится делать типа "красиво". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 20:23 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н., Office OpenXML, OpenDocument - относительно новые форматы, у нас просто красоту запросили, пришлось присмотреться. Shared строки - своеобразная оптимизация данных для формата OpenXML. Создается "индексный" файл sharedStrings.xml в который помещаются все текстовые значения из книги. При заполнении конкретной ячейки указывают индекс из sharedStrings. Все это жутко неудобно, народ это дело пытается через XSLT заполнять - вешаются. Мало кто знает, что можно указывать текстовые значения сразу - inline. Пример строки в Office OpenXML c числом и инлайн-строкой : Код: plaintext 1. 2. 3. 4. 5. 6.
Word отлично кушает обычный html, только сменить заголовок Content-type у csp-страницы. Схема та же - создали нужный файл в Worde, сохранили как web-страницу, открываем блокнотом и учимся. Из особенностей - часть css приходится прописывать в аттрибутах тегов, особенно ячеек таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 21:04 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
В том XML, в котором я работаю - работает вот так: <Row ss:AutoFitHeight="1"> <Cell><Data ss:Type="String">Hello World</Data></Cell> </Row> Ваш пример в моем документе не отобразился, видимо разные форматы. Что ворд и эксель можно делать из обычного html - я в курсе, но на практике получается довольно коряво, вплоть до того, что кривится кодировка и не нашли пути это побороть. А уж то, что стили работают как попало - это вообще как за здрасьте. XML формат гораздо стабильней, сейчас двигаемся в эту сторону. А в чем смысл inline и shared string? Так как мы делаем - гораздо проще (хотя это формат другой, тут наверно нельзя сравнивать.) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 21:45 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н., пример и не отобразится, так как это только часть файла из архива (.xslx). Приведен на случай, если кто-нить заинтересуется форматом. Большинство проблем со стилями для word-html мы успешно забороли, с кодировкой проблем тоже нет. Но пользователь захотел Excel и обязательно с графиками. Смысл sharedStrings.xml - позволяет Microsoft говорить что у них самый компактный (размер итоговых файлов) xml формат для офисных документов :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 22:07 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Я понял, что это часть, я просто попытался в свой файл затолкать, естественно, ничего из этого не вышло :-) До графиков мы своих еще не распустили. Я страшные глаза делаю, когда надо картинки вставить :-) А у вас какой способ генерации файлов, в общих чертах? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2010, 22:46 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н., создаем файл Excel (xlsx или ods), распаковываем его (для использования в качестве шаблона), на csp-странице получаем параметры запроса, делаем копию шаблона, дописываем данные в файлы.xml копии шаблона, пакуем zip-ом, выдаем на странице. Формирование собственно файла xml, как и предлагал - глобал и команда w (при условии что в данных не будет <> ;)). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2010, 14:07 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Пойти по пути шаблонов я пробовал для отправки писем, правда шаблон хранил на диске. Первый пример стал последним - слишком мало гибкости, в шаблон как переменную приходитось вставлять целые таблицы, а это не айс. Затолкать готовый файл прямо в CSP-шку мне как-то даже в голову не пришло :-) В любом случае, напрямую через теги это сильно страшно, ошибиться же легко? Надо со своим способом мне попробовать xlsx сделать, а то в том формате XML, в котором мы работает, даже картинки нельзя вставлять. Графики очень интересно делать сразу в отчетах. А zip вы через $zf запускаете? Или есть алгоритмы сжатия данных в потоках каше? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2010, 21:34 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Блок А.Н.А zip вы через $zf запускаете? Или есть алгоритмы сжатия данных в потоках каше? Методы: %SYSTEM.Util.Compress(), %SYSTEM.Util.Decompress() Классы: %Stream.GblBinCompress, %Stream.GblChrCompress PS: я тоже думал когда-то об использовании XML для генерации Excel-отчётов, но потом отказался из-за ограничений, которые здесь упоминаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2010, 21:57 |
|
Генерация XML-Excel файлов
|
|||
---|---|---|---|
#18+
Пока не понял, что за алгоритм сжатия у них. Но вроде не zip? А какие ограничения xml формата для вас критичны? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2010, 22:30 |
|
|
start [/forum/topic.php?fid=39&msg=37018450&tid=1556333]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 166ms |
0 / 0 |