Subject: Re: [xsl] generating Office Open XML parts using xslt From: "Paul Tyson phtyson@xxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sat, 26 Jul 2014 04:04:11 -0000 |
I appreciate all the kind interest in this topic. I will set the difficulty warnings aside for now because I believe the potential benefits of this approach are worth some effort. Thanks to Pavel Ptacek's xsl-excel-engine [1], recommended by Vincent Lizzi, I was able to get a leg up on this effort. See below for an Xproc pipeline definition that creates a minimal blank spreadsheet (.xlsx) that can be opened without incident in Excel 2007. It uses the Exproc [2] extension step pxp:zip (as implemented in calabash [3]) to produce the xlsx package. Apologies to those who don't speak xproc, and further apologies since there is not a line of xslt in it. But imagine that any of the input[@port='source']/inline elements in the <pxp:zip> step can be replaced with the results of whatever transformations you like, and this becomes a very powerful tool. In particular, it should be straightforward to transform an fo:table to a workbook sheet. Regards, --Paul [1] https://github.com/foglcz/xsl-excel-engine [2] http://exproc.org/ [3] http://xmlcalabash.com/ Run with calabash like: > java -jar calabash.jar ooxml.xpl output-file=file://path/to/output.xlsx ============== ooxml.xpl =============== <declare-step name="ooxml-proc" xmlns="http://www.w3.org/ns/xproc" xmlns:pxp="http://exproc.org/proposed/steps" version="1.0"> <option name="output-file"/> <output port="result" primary="true"/> <serialization port="result" indent="true"/> <import href="http://xmlcalabash.com/extension/steps/library-1.0.xpl"/> <pxp:zip command="create"> <with-option name="href" select="$output-file"/> <input port="source"> <inline xml:base="http://example.org/sheet1"> <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <sheetData /> </worksheet> </inline> <inline xml:base="http://example.org/workbook"> <workbook xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"> <sheets> <sheet name="Sheet1" sheetId="1" r:id="rId1"/> </sheets> </workbook> </inline> <inline xml:base="http://example.org/content-types"> <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"> <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/> <Default Extension="xml" ContentType="application/xml"/> <Override PartName="/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.shee t.main+xml"/> <Override PartName="/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.work sheet+xml"/> </Types> </inline> <inline xml:base="http://example.org/package-rels"> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/off iceDocument" Target="workbook.xml"/> </Relationships> </inline> <inline xml:base="http://example.org/workbook-rels"> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/wor ksheet" Target="sheet1.xml"/> </Relationships> </inline> </input> <input port="manifest"> <inline> <zip-manifest xmlns="http://www.w3.org/ns/xproc-step"> <entry name="sheet1.xml" href="http://example.org/sheet1"/> <entry name="workbook.xml" href="http://example.org/workbook"/> <entry name="[Content_Types].xml" href="http://example.org/content-types"/> <entry name="_rels/.rels" href="http://example.org/package-rels"/> <entry name="_rels/workbook.xml.rels" href="http://example.org/workbook-rels"/> </zip-manifest> </inline> </input> </pxp:zip> </declare-step> ================== end of file =============== On Fri, 2014-07-25 at 13:51 +0000, Eliot Kimber ekimber@xxxxxxxxxxxx wrote: > If you can use Java, the Apache POI library makes reading and writing MS > Office formats about as easy as it can be. I've successfully used the > libraries to read and write non-trivial Excel spreadsheets and also to > generate Powerpoint slides (although the current support for Powerpoint is > less complete than for Excel). It would be a significant development > effort to build equivalent infrastructure in XSLT and I would be loath to > take it on. > > For powerpoint generation I used the technique of using an intermediate > XML format that abstracts slides and then Java code that transforms that > XML into Powerpoint using the POI library. That makes it possible to use > XSLT to generate the slide content but avoids having to deal with the > Office Open complexity in XSLT. The code is the The Slidinator project on > Github (https://github.com/drmacro/slidinator). > > Cheers, > > E. > bbbbb > Eliot Kimber, Owner > Contrext, LLC > http://contrext.com > > > > > On 7/25/14, 7:28 AM, "Nicolas BUONOMO nicolas.buonomo@xxxxxxxxxxx" > <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > >Hi, > > > >You can also generating Open Document spreedsheets (xls) and then convert > >them to xlsx document with > >libreoffice for exemple. > >I think that generating Open Document Format is more easy than generating > >Office Open XML. I have do it in > >some simple case. > > > >Nicolas > > > >On 25/07/2014 03:02, Paul Tyson phtyson@xxxxxxxxxxxxx wrote: > >> Does anyone know of success stories in generating Office Open XML > >> artifacts using XSLT? > >> > >> (This is the "open" format used by Microsoft Office since 2007, > >> standardized in ISO/IEC 29500 and ECMA-376.) > >> > >> I am looking for pointers to solid documentation of namespaces and > >> package structure, particularly for SpreadsheetML (Microsoft's .xlsx > >> format) as used in Excel 2007. > >> > >> Thanks in advance, > >> --Paul > >> > >> > > > >-- > >Nicolas BUONOMO > >CNAF - CNEDI RhC4ne Alpes > >DSI - Direction Fonctionnelle et Processus > >Relation avec les CollectivitC)s Territoriales > >TC)l : 0478636669 / 0677877811 > >MC)l : nicolas.buonomo@xxxxxxxxxxx
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] generating Office Open XM, Eliot Kimber ekimber | Thread | Re: [xsl] generating Office Open XM, Wendell Piez wapiez@ |
Re: [xsl] generating Office Open XM, Eliot Kimber ekimber | Date | Re: [xsl] How to stream-process non, Costello, Roger L. c |
Month |