powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
17 сообщений из 17, страница 1 из 1
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38499393
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит задача софмировать .xls файл на сервере. В результате поисков нашла подходящий метод, описанный в статье
http://habrahabr.ru/company/intersystems/blog/163981/

Вот незадача, делаю все по инструкции, но в итоге не получается.
Далее код, который преобразует .xml файл в .xls. Файл xml с данными прилагаю (его нужно сохранить C:\123\ или др. место, но тогда в методе поправить).
Вызов метода:
d ##class(zen.DailyReport).generateReportContainer("C:\123\Person.xls")

В итоге файл создается, но открывается с ошибкой, отображается xml таблица стилей, но вовсе не данные.

Системные данные: Cache 2012, win 7, Excel 2007

Class zen.DailyReport Extends %ZEN.Report.reportPage
{  

XData xsl
 {
 <xsl:stylesheet version="1.0" xmlns:xsl="www.w3.org/1999/XSL/Transform"
   xmlns="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">
   <xsl:template match="/">
     <xsl:processing-instruction name="mso-application">
       <xsl:text>progid="Excel.Sheet"</xsl:text>
     </xsl:processing-instruction> 

<Workbook xmlns="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" >
 <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
  <Author>unUser</Author>
  <LastAuthor>unUser</LastAuthor>
  <Created>2013-12-12T21:38:36Z</Created>
  <Company>NNN</Company>
  <Version>12.00</Version>
 </DocumentProperties>
 <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
  <WindowHeight>12660</WindowHeight>
  <WindowWidth>28620</WindowWidth>
  <WindowTopX>120</WindowTopX>
  <WindowTopY>15</WindowTopY>
  <ProtectStructure>False</ProtectStructure>
  <ProtectWindows>False</ProtectWindows>
 </ExcelWorkbook>
 <Styles>
  <Style ss:ID="Default" ss:Name="Normal">
   <Alignment ss:Vertical="Bottom"/>
   <Borders/>
   <Font ss:FontName="Calibri" x:CharSet="204" x:Family="Swiss" ss:Size="11"
    ss:Color="#000000"/>
   <Interior/>
   <NumberFormat/>
   <Protection/>
  </Style>
 </Styles>
 <Worksheet ss:Name="Лист1">
  <Table ss:ExpandedColumnCount="3" ss:ExpandedRowCount="1" x:FullColumns="1"
   x:FullRows="1" ss:DefaultRowHeight="15">
   <Column ss:AutoFitWidth="0" ss:Width="66"/>
   <Column ss:AutoFitWidth="0" ss:Width="94.5"/>
   <Column ss:AutoFitWidth="0" ss:Width="100.5"/>
   
  <xsl:for-each select="myReport">
  <xsl:for-each select="./code">
    <Row>
    <Cell>
        <Data ss:Type="String"><xsl:value-of select="./code"/></Data>
      </Cell>
      <Cell>
        <Data ss:Type="String"><xsl:value-of select="./name"/></Data>
      </Cell>
    <Cell>
        <Data ss:Type="String"><xsl:value-of select="./amount"/></Data>
      </Cell>
    </Row>     
  </xsl:for-each>
</xsl:for-each>

   
  </Table>
  <WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
   <PageSetup>
    <Header x:Margin="0.3"/>
    <Footer x:Margin="0.3"/>
    <PageMargins x:Bottom="0.75" x:Left="0.7" x:Right="0.7" x:Top="0.75"/>
   </PageSetup>
   <Selected/>
   <ProtectObjects>False</ProtectObjects>
   <ProtectScenarios>False</ProtectScenarios>
  </WorksheetOptions>
 </Worksheet>
</Workbook>

   </xsl:template>
 </xsl:stylesheet>
 }
 
 ClassMethod generateReportContainer(outFileName As %String) As %Status
{
   set xslStream = ##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1)_ "||xsl").Data  
   set xmlStream = ##class(%FileBinaryStream).%New()  
   set xmlStream.Filename = "C:\123\myXML.xml" // путь к файлу .xml   
   
   set outStream = ##class(%FileCharacterStream).%New()
   set outStream.TranslateTable = "UTF8"
   set outStream.Filename = outFileName
     
   set sc = ##class(%XML.XSLT.Transformer).TransformStream(xmlStream, xslStream, .outStream)   
   
   if $$$ISERR(sc) quit sc
   
   quit outStream.%Save()
}

}
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38499396
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xml файл
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38499896
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galinaVLВот незадача, делаю все по инструкции, но в итоге не получается.
Чтобы заработало замените<xsl:stylesheet version="1.0" xmlns:xsl="www.w3.org/1999/XSL/Transform"на<xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform"
И обратите внимание на Шаг 3. Посредством любого текстового редактора вносятся изменения в структуру xml путём удаления лишних атрибутов. В нашем случае удаляются атрибуты: ss:ExpandedColumnCount = «67»; ss:ExpandedRowCount = «45»; x:FullColumns = «1»; x:FullRows = «1», так как учебный план имеет произвольное количество дисциплин, и если у элемента «Table» сохранить эти атрибуты, возникнет ошибка при генерации документа Excel из-за несоответствия количества строк и столбцов.
PS: а вообще печально, что готовый отчёт был удалён с dropbox и нет исходников с готовым проектом.
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38500087
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я делал как раз недавно по этому описанию, на самом деле ручной работы много
если что нужно выложу исходники
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38500126
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас, как раз заканчиваю новый генератор для формирования отчетов в Excel, Word
не требуется ничего, ни fop, ни Office
Планируется использование готовых макетов Excel, Word, их достаточно нарисовать и оформить в соответствующем приложении,
поставка данных для отчета любым методом используемым в dataCombo
1 - путем выполнения запроса прописанного на странице OnCreateResultSet="..."
2 - путем выполнения запроса sql="..."
3 - путем выполнения запроса queryClass="...", queryName="..."
4 - путем выполнения запроса tableName="...", columnName="...", whereClause="...", orderByClause="...", groupByClause="..."
или из заранее сформированной глобали
Помимо использования готовых макетов Excel возможно формирование динамического отчета
Предусмотрена автоматическая конвертация данных типа дата, время, дата+время в формат Excel, т.е. готовый отчет на выходе становится 100% работоспособный для дальнейших манипуляций с данными
При формировании отчета Word используются закладки
Все макеты(шаблоны) должны быть сформированы в MS Office 2007 и выше
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38500184
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для экселя еще есть мой генератор
http://www.sql.ru/forum/814407/generaciya-xml-excel-faylov?hl=

Там не последняя версия (вернее даже так, последняя выложенная версия там с ошибкой),
но если тема интересна, могу выложить последнюю версию, которая используется нами.
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38500292
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примерно с 2000 года у нас ВСЯ работа с серверами CACHE (MSM) идет ИНТЕРАКТИВНО через EXCEL

ВСЕ отчеты, само собой, тоже выдаются в EXCEL

Основная фишка - в М-сервере крутится "Виртуальный-многомерный-многопользовательский-EXCEL",
написаный на MUMPS

Который считает-сортирует гораздо быстрее "обыкновенного",
а отображается на обычные клиентские EXCELи в ПРИВЫЧНОМ ВИДЕ

скорость выдачи таблиц - до 10 000 строк / сек,
условное форматирование - оформление - раскраска : "на лету" по MUMPS-условиям и/или "по шаблонам".

Cистема работает с любыми версиями CACHE-MiniM (32-64-bit), MSM-nt (32-bit),
и любыми 32-64-MSофисами на клиентах (2000 - 2007 - 2010 - 2013).
Стыковка серверов "Unicode -- 8bit"

Программирование - MUMPS-команды в ячейках листов-шаблонов.
Короткие текстовые директивы для построения элементов интерфейса, тоже в ячейках,
задаются вручную или создаются автоматически-программно,
отрисовываются клиенту в виде кнопок - бантиков по мере необходимости.
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38501771
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit, спасибо, помогло!
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38501792
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ymka2007я делал как раз недавно по этому описанию, на самом деле ручной работы много
если что нужно выложу исходники

да, выложите пожалуйста
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38501795
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н., спасибо, ваш пример самым первым нашла, опробовала :) тоже один из способов формировать Excel, но минус, что много классов нужно создавать.
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38501797
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MX-9, MUMPS пока незнакомая для меня технология, надо бы почитать, спасибо!
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38501932
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
galinaVL,

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

если у Вас после выполнения Вашего кода данные не вставились, то скорее всего либо не корректно формируются данные при отработке reportDefinition или Вы не правильно строите (указываете) параметры в цикле <xsl:for-each>

начните с простого, для отображения подготовленных данных используйте
http://localhost:57774/csp/samples/ZENApp.MyReport.cls ?$MODE=xml
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38501993
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galinaVL,

А в чем проблема? Закачиваете пакет и дальше с ним работаете. Работать с ним несложно.
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38503246
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9Примерно с 2000 года у нас ВСЯ работа с серверами CACHE (MSM) идет ИНТЕРАКТИВНО через EXCEL

ВСЕ отчеты, само собой, тоже выдаются в EXCEL

Основная фишка - в М-сервере крутится "Виртуальный-многомерный-многопользовательский-EXCEL",
написаный на MUMPS

Который считает-сортирует гораздо быстрее "обыкновенного",
а отображается на обычные клиентские EXCELи в ПРИВЫЧНОМ ВИДЕ

скорость выдачи таблиц - до 10 000 строк / сек,
условное форматирование - оформление - раскраска : "на лету" по MUMPS-условиям и/или "по шаблонам".

Cистема работает с любыми версиями CACHE-MiniM (32-64-bit), MSM-nt (32-bit),
и любыми 32-64-MSофисами на клиентах (2000 - 2007 - 2010 - 2013).
Стыковка серверов "Unicode -- 8bit"

Программирование - MUMPS-команды в ячейках листов-шаблонов.
Короткие текстовые директивы для построения элементов интерфейса, тоже в ячейках,
задаются вручную или создаются автоматически-программно,
отрисовываются клиенту в виде кнопок - бантиков по мере необходимости.
Кстати уже давно есть Web версии Excel (MSOfficeWebApps и прочие), вы их поддерживаете ?
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38503448
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<<Кстати уже давно есть Web версии Excel (MSOfficeWebApps и прочие), вы их поддерживаете ? >>

DAiMor,

хотелось бы

но - своего умишки не хватает,
с кем бы скооперироваться ...

и спонсора - заказчика пока нет на разработку WEB-EXCEL
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38503516
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9<<Кстати уже давно есть Web версии Excel (MSOfficeWebApps и прочие), вы их поддерживаете ? >>

DAiMor,

хотелось бы

но - своего умишки не хватает,
с кем бы скооперироваться ...

и спонсора - заказчика пока нет на разработку WEB-EXCEL
Подавайте заявку - проспонсируем работу. Тема интересная. В форме есть вопросы про институт, т.е. в работе обязательно должны участвовать студенты - у вас есть Лиепайский университет и Рижский технический, контакты дадим.
...
Рейтинг: 0 / 0
Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
    #38503691
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений,

Спасибо за интересное предложение.

Сейчас Латвия переходит со своей валюты на общеевропейскую - EURO
У нас запарка до марта-апреля - все надо печатать в LVL и EUR одновремено.

Плюс к этому - наш основной обьект - металлургический завод - меняет владельца.
Равносильно пожару.

Но в начале года попытаемся.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Помогите разобраться Zen Reports и %XML.Writer для генерации отчётов Excel в Cache
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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