powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Генерация XML-Excel файлов
25 сообщений из 49, страница 1 из 2
Генерация XML-Excel файлов
    #37017466
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кому-то интересно, пакет создания XML-Excel файлов.
Функционал пока только базовый.
Пример работы в методе Excel.Document.Test.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37017924
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,

класса для тестирования нет в наличии
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37018450
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
d ##class(Excel.Document).Test()
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37018457
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там только путь указывается напрямую, поправьте в исходниках метода.
В принципе, это практически необкатаный класс, но если есть интерес, могу доработать.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37019686
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще сейчас разрабатываю ту же фигню для ворда.
Но там у самого ворда более сложная структура, классов в полтора раза больше получается и как-то более говнокодисто все.

Здесь по сути вся идея в том, чтобы построить дерево объектов, которое при выгрузке в XML становится сразу готорым документом.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37019701
Фотография barl_alibek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,

очень интересная работа, в итоге может получится очень даже интересная вещь
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37019825
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. , я заинтригован.
У тебя есть исходное описани этой xml-структуры? По Экселю и по Ворду? Интересно было бы почитать на русском если есть...
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37020072
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неа. Беру файл вордовый или экселевский и сохраняю его как XML, дальше смотрю текстовый файл.
И по его структуре дорисовываю классы :-)
Там правда много необязательных атрибутов и тегов, иногда вообще непонятных.

В ворде научился устанавливать параграфы, устанавливать интервал строк, ставить позиции табуляции, менять шрифт текста, атрибуты(подчеркнутый, жирный), выравнивание, работать с колонтитулами (пока только с верхним), ставить разрывы страниц, вставлять картинки.
Пока еще не сделал работу с таблицами.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37020158
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa,

+1
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021145
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa, этож стандарт Office Open XML от мелкомягких - всего 6000 страничек :). Будет работать начиная с офиса 2003 (если поставить вот это ). Есть еще Open Document Format , но будет открываться с MS Office 2007 SP2. И то (.docx, .xlsx) и другое (.odt,.ods) - обычные zip архивы каталогов с xml файлами. Литературы много, но все на english. Проще делать как Александр, создать шаблон и посмотреть что к чему.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021154
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно формировать не только данные, но и графики-диаграммы, например ;)
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021637
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот с графиками-диаграммами облом, с рисунками в экселе тоже труба - при сохранении он просто из файла все это убирает.

В ворде картинки можно.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021651
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintЛитературы много, но все на english.
Вот ведь...

doublefintПроще делать как Александр, создать шаблон и посмотреть что к чему.
Дык устал уже методом тыка...
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021754
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. Вот с графиками-диаграммами облом Сделайте шаблон в Excel - 1 лист с данными, 2 лист - вставьте диаграмму на основе данных из первого листа. Сохраните в формате xlsx или OpenDocument. Откройте zip-ом ищите файл chart.xml для xlsx ( или Object 1\content.xml для OpenDocument). Там будут привязки к ячейкам данных. Сформировать такое же достаточно легко.

OpenDocument более понятный, все подробно расписано в тегах, но более избыточный. Office OpenXML - труднее соориентироваться что к чему, есть особенности вроде shared и inline строк, но формировать удобнее.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021783
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В экселе все достаточно просто.
По крайней мере у нас был генератор на уровне 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>.
В общем, с вордом пока сумбур :-)
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021797
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

В экселе я делал именно по известной мне уже схеме, т.е. я просто переписал генератор тот, что уже был. И так получилось, что это был формат не xlsx :-)

Shared и inline строки даж не знаю что такое. Стыдно должно быть, да? :-)
У нас просто достаточно простые потребности к генерации экселевских листов - это просто данные, как-то минимальным образом отформатированные.
А вот на в ворде они отрываются, приходится делать типа "красиво".
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021861
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,
Office OpenXML, OpenDocument - относительно новые форматы, у нас просто красоту запросили, пришлось присмотреться.

Shared строки - своеобразная оптимизация данных для формата OpenXML. Создается "индексный" файл sharedStrings.xml в который помещаются все текстовые значения из книги. При заполнении конкретной ячейки указывают индекс из sharedStrings. Все это жутко неудобно, народ это дело пытается через XSLT заполнять - вешаются. Мало кто знает, что можно указывать текстовые значения сразу - inline. Пример строки в Office OpenXML c числом и инлайн-строкой :
Код: plaintext
1.
2.
3.
4.
5.
6.
<row>
        <c><v> 2010 </v></c>
        <c t="inlineStr">
		<is><t>Привет мир!</t></is>
	</c>
</row>
с - column или cell, @t - type, v - value, is - inline string, t - text

Word отлично кушает обычный html, только сменить заголовок Content-type у csp-страницы. Схема та же - создали нужный файл в Worde, сохранили как web-страницу, открываем блокнотом и учимся. Из особенностей - часть css приходится прописывать в аттрибутах тегов, особенно ячеек таблиц.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021908
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том XML, в котором я работаю - работает вот так:
<Row ss:AutoFitHeight="1">
<Cell><Data ss:Type="String">Hello World</Data></Cell>
</Row>
Ваш пример в моем документе не отобразился, видимо разные форматы.

Что ворд и эксель можно делать из обычного html - я в курсе, но на практике получается довольно коряво, вплоть до того, что кривится кодировка и не нашли пути это побороть. А уж то, что стили работают как попало - это вообще как за здрасьте. XML формат гораздо стабильней, сейчас двигаемся в эту сторону.

А в чем смысл inline и shared string? Так как мы делаем - гораздо проще (хотя это формат другой, тут наверно нельзя сравнивать.)
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021925
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н., пример и не отобразится, так как это только часть файла из архива (.xslx). Приведен на случай, если кто-нить заинтересуется форматом.

Большинство проблем со стилями для word-html мы успешно забороли, с кодировкой проблем тоже нет. Но пользователь захотел Excel и обязательно с графиками.

Смысл sharedStrings.xml - позволяет Microsoft говорить что у них самый компактный (размер итоговых файлов) xml формат для офисных документов :)
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37021949
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял, что это часть, я просто попытался в свой файл затолкать, естественно, ничего из этого не вышло :-)

До графиков мы своих еще не распустили.
Я страшные глаза делаю, когда надо картинки вставить :-)
А у вас какой способ генерации файлов, в общих чертах?
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37023261
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н., создаем файл 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.
///Создает файл с основными данными
ClassMethod wDataSheet(gln as %String) {
 &html<<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<sheetData>>
	s row="" f { s row=$o(@gln@("row",row)) q:row=""
		w !,"<row>"
		s cell="" f { s cell=$o(@gln@("row",row,"c",cell)) q:cell=""
			s t=$d(@gln@("row",row,"c",cell,"t")) ;type
			s v=$g(@gln@("row",row,"c",cell,"v")) ;value
			w "<c ",$s(t:"t=""inlineStr""", 1 :""),">"
			w:'t "<v>",v,"</v>"
			w:t "<is><t>",v,"</t></is>"
			w "</c>"
		}
 		w "</row>"
	}
 &html<</sheetData></worksheet>>
 Q
}
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37023670
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пойти по пути шаблонов я пробовал для отправки писем, правда шаблон хранил на диске.
Первый пример стал последним - слишком мало гибкости, в шаблон как переменную приходитось вставлять целые таблицы, а это не айс.

Затолкать готовый файл прямо в CSP-шку мне как-то даже в голову не пришло :-)
В любом случае, напрямую через теги это сильно страшно, ошибиться же легко?

Надо со своим способом мне попробовать xlsx сделать, а то в том формате XML, в котором мы работает, даже картинки нельзя вставлять. Графики очень интересно делать сразу в отчетах.

А zip вы через $zf запускаете? Или есть алгоритмы сжатия данных в потоках каше?
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37023691
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.А zip вы через $zf запускаете? Или есть алгоритмы сжатия данных в потоках каше?
Методы: %SYSTEM.Util.Compress(), %SYSTEM.Util.Decompress()
Классы: %Stream.GblBinCompress, %Stream.GblChrCompress

PS: я тоже думал когда-то об использовании XML для генерации Excel-отчётов, но потом отказался из-за ограничений, которые здесь упоминаются.
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37023733
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока не понял, что за алгоритм сжатия у них. Но вроде не zip?

А какие ограничения xml формата для вас критичны?
...
Рейтинг: 0 / 0
Генерация XML-Excel файлов
    #37023801
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,
у вас там в Минске что-то серьезное творится?
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Генерация XML-Excel файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]