XML в XLS с использованием Java - PullRequest
       0

XML в XLS с использованием Java

0 голосов
/ 29 сентября 2010

Как я могу сопоставить метаданные с данными. Например, я хочу, чтобы только фамилия и электронная почта из файла XML в файл xls. Как я могу выбрать Фамилию и адрес электронной почты из файла XML и преобразовать его в два столбца файла XLS столбца, которые будут Фамилия и адрес электронной почты. Спасибо

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>

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Для этого вы можете использовать XSL-преобразование с выводом в формате CSV, который можно загрузить в Excel.

Если вы хотите написать программу с использованием C # 4.0 и Office 2008/10, также проще, чем когда-либо, использовать возможности взаимодействия - взгляните на C # Samples в примерах office.

0 голосов
/ 01 октября 2010

Эта таблица стилей:

<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>

Выход:

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...