ZMS-Datentabellen in das MS-Excel-Format überführenAutor: Dr. Frank Hoffmann, 10.09.2006 Mithilfe der ZMS-Filter lassen sich einfach strukturierte MS-Excel-Tabellen in das ZMS-Datentabellen-Objekt überführen bzw. aus ZMS die Daten nach Excel übernehmen. Der Filter arbeitet mit dem XML-Format von MS-Excel 2003.
Die Default-Filter von ZMS (ab 2.9.4#11) enthalten verschiedene Beispiele, die zeigen, wie man die Filter konfiguriert. Es existiert im Default-Filter-Set sowohl ein Export wie auch ein Import-Filter für das XML-basierte MS-Excel 2003-Format. Man kann die Default-Filter im Konfigurations-Menü "Filter" in der Sektion "Importieren" in die ZMS-Instanz bzw. dort eine entsprechende Konfigurations- Datei importieren (Download, s.a. rechts ).
Dann stehen für Excel-Format beide Filter zur Verfügung, deren Batch-Prozesse an die eigene Pfad-Verhältnisse angepasst werden müssen: betroffen sind "xslt_trans_xsl" und "xslt", wo der Aufruf des XSLT-Prozessors (z.B. XSLT Saxon) an die lokalen Verhältnisse angepasst wird.
Wichtiger Hnweis: Vor Einsatz der Filter ist in seiner Detail-Konfiguration unter "Eigenschaften" festzulegen, für welche Objekt-Klassen er gelten soll. Der Filter erscheint nur dann im Im/Export-Menü des Objektes, wenn der entsprechende Objektklassen-Name hier aktiviert ist.
Code-Beispiel für Prozess-Schritt: Dynamische XSL-Generierung per DTML
Da die Datentabellen-Struktur je nach Konfiguration des entsprechenden Speziellen-Objektes sehr unterschiedlich sein kann, ist eine von dieser Struktur abhängige Transformation erforderlich. Das passende XSL wird auf Basis der in ZMS konfigurierten Struktur mit einer in den Filter eingebundenen DTML-Methode erzeugt. <!-- BO excel2ZMSRecordSet -->
<dtml-let xsl="[]">
<dtml-call "xsl.append('<?xml version='+QUOT+'1.0'+QUOT+' encoding='+QUOT+'ISO-8859-1'+QUOT+'?>\n')">
<dtml-call "xsl.append('<xsl:stylesheet version='+QUOT+'1.0'+QUOT+'\n')">
<dtml-call "xsl.append(' xmlns:xsl='+QUOT+'http://www.w3.org/1999/XSL/Transform'+QUOT+'\n')">
<dtml-call "xsl.append(' xmlns:ss='+QUOT+'urn:schemas-microsoft-com:office:spreadsheet'+QUOT+'\n')">
<dtml-call "xsl.append(' xmlns:spreadsheet='+QUOT+'urn:schemas-microsoft-com:office:spreadsheet'+QUOT+'\n')">
<dtml-call "xsl.append('>\n')">
<dtml-call "xsl.append('<xsl:output method='+QUOT+'xml'+QUOT+' encoding='+QUOT+'ISO-8859-1'+QUOT+'/>\n')">
<dtml-call "xsl.append('<xsl:template match='+QUOT+'/'+QUOT+'>\n')">
<dtml-call "xsl.append('<list>\n')">
<dtml-call "xsl.append('<xsl:for-each select='+QUOT+'spreadsheet:Workbook/spreadsheet:Worksheet/spreadsheet:Table/spreadsheet:Row'+QUOT+'>\n')">
<dtml-call "xsl.append('<item type='+QUOT+'dictionary'+QUOT+'>\n')">
<dtml-call "xsl.append('<dictionary>\n')">
<dtml-in "getMetaobjAttrIds(meta_id)[1:]">
<dtml-let index=sequence-index key=sequence-item metaobjAttr="getMetaobjAttr(meta_id,key)">
<dtml-call "xsl.append('<item')">
<dtml-call "xsl.append(' key='+QUOT+key+QUOT)">
<dtml-call "xsl.append(' type='+QUOT+metaobjAttr['type']+QUOT)">
<dtml-call "xsl.append('>')">
<dtml-if "key=='sort_id'">
<dtml-call "xsl.append('<xsl:value-of select='+QUOT+'position()'+QUOT+'/>')">
<dtml-else>
<dtml-call "xsl.append('<xsl:value-of select='+QUOT+'spreadsheet:Cell[%i]/spreadsheet:Data'%index+QUOT+'/>')">
</dtml-if>
<dtml-call "xsl.append('</item>\n')">
</dtml-let>
</dtml-in>
<dtml-call "xsl.append('</dictionary>\n')">
<dtml-call "xsl.append('</item>\n')">
<dtml-call "xsl.append('</xsl:for-each>\n')">
<dtml-call "xsl.append('</list>\n')">
<dtml-call "xsl.append('</xsl:template>\n')">
<dtml-call "xsl.append('</xsl:stylesheet>\n')">
<dtml-call "localfs_write(ZMS_FILTER_CUR_DIR+'/trans.xsl',''.join(xsl),'')">
</dtml-let>
<!-- EO excel2ZMSRecordSet -->
|
![]() |
|
Home |
Sitemap |
Druckversion |
Seitenanfang |
Impressum |
pressinfo
© 2001-2008 Hoffmann+Liebenberg GmbH, SNTL Publishing GmbH & Co KG
|
ZMS is a partner project of medvalue.net