.net XSLT创build工作表

我正在尝试导出大量的数据,以优秀。
我需要在不同的工作表之间分隔数据的可能性。
我更喜欢不依赖于这样的包,所以我想到了XSLT。

有谁知道如何使用XSLT创build工作表?

为此,可以使用XSLT,但必须以Microsoft Excel XML格式输出数据,这是Microsoft Excel 2002以后的版本所支持的。

Microsoft XML电子表格参考

你也可以在维基百科find一个有用的样本

Microsoft Office XML格式

XSLT如何编码通常取决于您希望转换的XML的结构。 这是一个非常简单的例子,它转换为一张纸:

<data> <row> <cell>1.1</cell><cell>12</cell> </row> <row> <cell>2.1</cell><cell>2.2</cell> </row> </data> 

然后,使用以下XSLT将其转换为Excel XML

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"> <xsl:template match="/data"> <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>Bob</Author> <Created>2001-01-01T12:00:00Z</Created> <Version>1.0</Version> </DocumentProperties> <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"> <WindowHeight>8835</WindowHeight> <WindowWidth>11340</WindowWidth> <WindowTopX>480</WindowTopX> <WindowTopY>120</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:Family="Swiss" ss:Size="11"/> <Interior/> <NumberFormat ss:Format="#,##0.00"/> <Protection/> </Style> </Styles> <Worksheet ss:Name="Sheet1"> <ss:Table x:FullColumns="1" x:FullRows="1"> <xsl:attribute name="ss:ExpandedColumnCount"> <xsl:value-of select="count(row[1]/cell)"/> </xsl:attribute> <xsl:attribute name="ss:ExpandedRowCount"> <xsl:value-of select="count(row)"/> </xsl:attribute> <xsl:apply-templates select="row"/> </ss: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> <Print> <ValidPrinterInfo/> <PaperSizeIndex>9</PaperSizeIndex> <HorizontalResolution>600</HorizontalResolution> <VerticalResolution>0</VerticalResolution> </Print> <Selected/> <ProtectObjects>False</ProtectObjects> <ProtectScenarios>False</ProtectScenarios> </WorksheetOptions> </Worksheet> </Workbook> </xsl:template> <xsl:template match="row" xmlns="urn:schemas-microsoft-com:office:spreadsheet"> <Row> <xsl:apply-templates select="cell"/> </Row> </xsl:template> <xsl:template match="cell" xmlns="urn:schemas-microsoft-com:office:spreadsheet"> <Cell> <Data> <xsl:choose> <xsl:when test="number(.) =."> <xsl:attribute name="ss:Type">Number</xsl:attribute> </xsl:when> <xsl:otherwise> <xsl:attribute name="ss:Type">String</xsl:attribute> </xsl:otherwise> </xsl:choose> <xsl:value-of select="."/> </Data> </Cell> </xsl:template> </xsl:stylesheet> 

虽然这个例子只创build一个工作表,但你应该能够看到创build多个工作表是多么的简单。 只需为您需要的文档中的每个工作表输出另一个工作表元素。

在Microsoft Excel中手动创build电子表格,然后另存为 Mircosoft Excel XML格式,然后在记事本中查看它以查看它创build的XML可能会很有用。 这对于查看它如何执行格式化或列宽等操作非常有用。