Здравствуйте, Fagim, Вы писали:
F>Советую просто попробовать (лучше не сразу с огромного отчета с кучей формул и форматирования, а с чего-то попроще). Сделать это исключительно с XSLT, избегая где можно прямого кодирования. Увидите как прелести этого дела, так и проблем куча вылезет, если с XML большого опыта нет. Пишите, посоветуемся...
Если можно маленький примерчик...
... << RSDN@Home 1.1.4 beta 2 >>
С примерчиком тяжеловато, так как делать проект специально для форума времени как-то нет, да еще ведь и данные надо прикладывать...
Но суть такая:
1)Заводиться XSLT — модуль, в котором в именованные шаблоны загнаны всякие здоровые, но маломеняющиеся элементы типа свойств документа (параметризованный шаблон), таблица стилей, определения форматов списков и т.п.
2)Заводится модуль, обволакивающий основные процедуры генерации таблиц — вывод строк, ячеек, их мержинг и т.п, можно и без этого модуля, но тогда все ячейки придется прямо прописовать в Spread..ML, что труднее читается
3)Еще какие-то утилитные модули (о скриптами, вызовом хитрых шаблонов через msxsl:node-set и т.п. — кстати запомните, если в трансформации А определена переменная или шаблон X, и А импортирует в себя Б, то для вызова шаблона или переменной X из Б, Б не должна импортировать А, импорты нельзя делать рекурсивно, да это и не надо, так как загрузчик СНАЧАЛА грузит ВСЕ трансформации в одну общую здоровую, а потом только смотрит где какие имена, так что спокойно можно писать типа <xsl:call-template name="some_name" select="$some_var"/> не заботясь о том, чтобы в этом конкретном файле была реализация шаблона и переменной — так на XSLT можно реализовывать полиморфизм, наследование, делегировние и аггрегацию, т.е. ООП
4) В итоге получаем возможность писать очень компактный и читабельный XSLT уже именно под требуемый отчет типа:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="
urn:schemas-microsoft-com:xslt" xmlns:s="
urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="
urn:schemas-microsoft-com:office:office" xmlns:x="
urn:schemas-microsoft-com:office:excel" xmlns:ss="
urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="
http://www.w3.org/TR/REC-html40"
xmlns:my="
urn:my.report"/>
<xsl:import href="excel.system.xslt"/>
<xsl:import href="excel.table.output.xslt"/>
<xsl:import href="my_report.private.utilities.xslt"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<my:headers>
<item>№</item>
<item>Название</item>
<item>Кол-во</item>
</my:headers>
<xsl:variable name="headers" select="document('')//my:headers/item"/>
<xsl:template match="/">
<xsl:text disable-output-escaping="yes"><?mso-application progid="Excel.Sheet"?></xsl:text><!--в .NET xsl:processing-instruction не отрабатывает адекватно-->
<s:Workbook>
<xsl:call-template name="_doc_props"/>
<xsl:call-template name="_styles"/>
<xsl:call-template name="_names"/>
<s:Worksheet>
<s:Table>
<!--типа генерим в 5-й строке зголовки таблицы (с нужным стилем), сам шаблон расположен например в импортированном excel.table.output.xslt -->
<xsl:call-template name="generate_row">
<xsl:with-param name="items" select="$headers"/>
<xsl:with-param name="row_index" select="5"/>
<xsl:with-param name="style" select="my_header_1"/>
</xsl:call-template>
<xsl:for-each select="//data/items">
<xsl:call-template name="generate_row">
<xsl:with-param name="items" select="."/>
<xsl:with-param name="style" select="my_data_row_main"/>
</xsl:call-template>
</xsl:fore-each>
<!--ну тут положим еще итоги выводим или еще что, неважно, суть ясна-->
<!-завершаем документ-->
............
Таким вот примерно образом...
Вот мой реальный пример, в котором правда мало понятно, но это пример читстого фасадного XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<?xmlspysamplexml E:\Документы\Фагим\Работа\Матушкин — генератор отчетов\Документ с сырыми данными, получаемыми в ходе генерации.xml?>
<xsl:stylesheet version="1.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform" xmlns:ask="ask#xslt#scripts" xmlns:s="
urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="
urn:schemas-microsoft-com:office:office" xmlns:x="
urn:schemas-microsoft-com:office:excel" xmlns:ss="
urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="
http://www.w3.org/TR/REC-html40" xmlns:msxsl="
urn:schemas-microsoft-com:xslt" >
<xsl:import href="excel.system.xslt"/>
<xsl:import href="multi_kvart_fiz_char.var.xslt"/>
<xsl:import href="multi_kvart_fiz_char.private.xslt"/>
<xsl:import href="multi_kvart_fiz_char.header.xslt"/>
<xsl:import href="multi_kvart_fiz_char.gendata.xslt"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="mup">Некотороый город</xsl:param>
<!--вызов скрипта-->
<xsl:param name="date" select="ask:datetime_today()"/>
<xsl:template match="/">
<xsl:call-template name="ex.sys.proc_inst"/>
<s:Workbook>
<xsl:call-template name="this.properties"/>
<xsl:call-template name="this.generate_styles"/>
<s:Worksheet ss:Name="Стандартный отчет">
<s:Table>
<xsl:call-template name="this.column_defenition"/>
<xsl:call-template name="this.caption"/>
<xsl:call-template name="this.headers"/>
<xsl:call-template name="this.generate_data"/>
</s:Table>
</s:Worksheet>
</s:Workbook>
</xsl:template>
</xsl:stylesheet>
данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Здравствуйте, Бабокин Дмитрий, Вы писали:
БД>Здравствуйте, Mast, Вы писали:
M>>Очень красивые отчеты можно получать из Crystal.
M>>Обычными путями делается отчет в Crystal, но не открывается во вьювере.
M>>А вызываются его методы, коотрые позволяют экспортировать в Ворд Ёксель ПыДыФы и ХыТыМыЛы кажется.
M>>Я делал только с Excel. Получалось ОЧЕНЬ просто и красиво.
M>>Если еще актуально — пиши, пришлю простенький Hello World.
M>>Ссылку дать не могу, сам разбирался — дневника не вел
БД>Если не сложно, дай мелнький примерчик 
пардон, СИЛЬНО отвлекли

еще актуально?
спрашиваю — потому как надо стряпать примерчик, готового нихт.
Здравствуйте, Mast, Вы писали:
M>Здравствуйте, Бабокин Дмитрий, Вы писали:
БД>>Здравствуйте, Mast, Вы писали:
M>>>Очень красивые отчеты можно получать из Crystal.
M>>>Обычными путями делается отчет в Crystal, но не открывается во вьювере.
M>>>А вызываются его методы, коотрые позволяют экспортировать в Ворд Ёксель ПыДыФы и ХыТыМыЛы кажется.
M>>>Я делал только с Excel. Получалось ОЧЕНЬ просто и красиво.
M>>>Если еще актуально — пиши, пришлю простенький Hello World.
M>>>Ссылку дать не могу, сам разбирался — дневника не вел
БД>>Если не сложно, дай мелнький примерчик
M>пардон, СИЛЬНО отвлекли
M>еще актуально?
M>спрашиваю — потому как надо стряпать примерчик, готового нихт.
Спасибо, уже разобрался
Здравствуйте,
Если кому-то дорого, компания планирует объявить конкурс на написание лучшей статьи, обзора про Report Sharp-Shooter.
Для особо активных рассматриваются различные скидки (возможно до 100%

).
Статьи рассматриваются на русском и английском языках.
С вопросами и предложениями можете обращаться на kate@9rays.net к нашей очаровательной Катюше.
Best regards,
Basil Kotov