2010-09-29 6 views
0

Comment puis-je mapper les métadonnées aux données. Par exemple, je ne veux que LastName et Email du fichier xml dans le fichier xls. Comment puis-je sélectionner LastName et e-mail à partir du fichier xml et le convertir en colonnes de fichier XLS à deux colonnes en tant que nom et email. MerciXML vers XLS en utilisant java

document XML

<root> 
    <metadata> 
     <item name="Last Name" type="xs:string" length="182"/> 
     <item name="First Name" type="xs:string" length="182"/> 
     <item name="Class Registration #" type="xs:decimal" precision="19"/> 
     <item name="Email" type="xs:string" length="422"/> 
     <item name="SacLink ID" type="xs:string" length="92"/> 
     <item name="Term Desc" type="xs:string" length="62"/> 
     <item name="Status Code" type="xs:string" length="6"/> 
    </metadata> 
    <data> 
     <row> 
      <value>XXX</value> 
      <value>xxxx</value> 
      <value>xxx</value> 
      <value>xxx</value> 
      <value>xxx</value> 
      <value>xx</value> 
      <value>xx</value> 
     </row> 
     <row> 
      <value>xxy</value> 
      <value>xx</value> 
      <value>xx</value> 
      <value>xx</value> 
      <value>xx</value> 
      <value>xx</value> 
      <value>xx</value> 
     </row> 
    </data> 
</root> 
+0

Ce n'est pas un document XML bien formé. –

Répondre

1

Vous pouvez utiliser une transformation XSL pour cela, la sortie au format CSV qui est chargeable par Excel.

Si vous souhaitez écrire un programme en utilisant C# 4.0 et Office 2008/10, il est également plus facile que jamais de tirer parti des capacités d'interopérabilité - jetez un coup d'œil au C# Samples, dans les exemples de bureau.

0

Cette feuille de style:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
xmlns:x="urn:schemas-microsoft-com:office:excel"> 
    <xsl:param name="pColumnNames" select="'Last Name,Email'"/> 
    <xsl:key name="kItemByPosition" match="item" 
      use="count(preceding-sibling::item)+1"/> 
    <xsl:template match="/"> 
     <xsl:processing-instruction name="mso-application"> 
      <xsl:text>progid="Excel.Sheet"</xsl:text> 
     </xsl:processing-instruction> 
     <Workbook> 
      <Worksheet ss:Name="Email Table"> 
       <Table x:FullColumns="1" x:FullRows="1"> 
        <xsl:apply-templates/> 
       </Table> 
      </Worksheet> 
     </Workbook> 
    </xsl:template> 
    <xsl:template match="metadata|row"> 
     <Row> 
      <xsl:apply-templates/> 
     </Row> 
    </xsl:template> 
    <xsl:template match="item|value"> 
     <xsl:if test="contains(concat(',',$pColumnNames,','), 
           concat(',',key('kItemByPosition', 
               position())/@name,','))"> 
      <Cell> 
       <Data ss:Type="String"> 
        <xsl:apply-templates select="@name|node()"/> 
       </Data> 
      </Cell> 
     </xsl:if> 
    </xsl:template> 
</xsl:stylesheet> 

Sortie:

<?mso-application progid="Excel.Sheet"?> 
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" 
      xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" 
      xmlns:x="urn:schemas-microsoft-com:office:excel"> 
    <Worksheet ss:Name="Email Table"> 
     <Table x:FullColumns="1" x:FullRows="1"> 
      <Row> 
       <Cell> 
        <Data ss:Type="String">Last Name</Data> 
       </Cell> 
       <Cell> 
        <Data ss:Type="String">Email</Data> 
       </Cell> 
      </Row> 
      <Row> 
       <Cell> 
        <Data ss:Type="String">XXX</Data> 
       </Cell> 
       <Cell> 
        <Data ss:Type="String">xxx</Data> 
       </Cell> 
      </Row> 
      <Row> 
       <Cell> 
        <Data ss:Type="String">xxy</Data> 
       </Cell> 
       <Cell> 
        <Data ss:Type="String">xx</Data> 
       </Cell> 
      </Row> 
     </Table> 
    </Worksheet> 
</Workbook> 
+0

Salut Alejandro, je suis nouveau à ce que vous pouvez me faire savoir comment j'utilise le code ci-dessus. J'ai 100's de fichier XML dans le format que j'ai donné, Mon but est de développer un programme qui prendra tout le fichier XML et le convertira en fichier XLS. Merci pour votre temps. – sandeep

+0

@sandeep: Ce serait une question sur la façon d'exécuter une transformation dans Java avec votre processeur XSLT. Je pense qu'il y a des réponses à cela dans SO. –

Questions connexes