主頁(yè) > 知識(shí)庫(kù) > ASP.NET使用xslt將xml轉(zhuǎn)換成Excel

ASP.NET使用xslt將xml轉(zhuǎn)換成Excel

熱門標(biāo)簽:呼叫中心 解決方案 服務(wù)器配置 電子圍欄 硅谷的囚徒呼叫中心 蘋果 智能手機(jī) 地方門戶網(wǎng)站

序:

  最近在給客戶做一個(gè)管理系統(tǒng)的時(shí)候,客戶提出要將查詢結(jié)果導(dǎo)出到Excel。對(duì)于還是實(shí)習(xí)生的我倍感壓力,于是找了點(diǎn)資料。網(wǎng)上有個(gè)示例,其中方法十分簡(jiǎn)單。于是照貓畫虎,把方法和心得與大家分享。OK,Let`s go

第一步:

  創(chuàng)建一個(gè)Excel文件(就是 普通的Excel),在第一個(gè)單元格輸入“city”,然后選擇“另存為”,此時(shí)彈出保存窗口。注意:將保持格式選擇為“XML 表格(*.xml)”,點(diǎn)擊保存。完畢后用記事本打開這個(gè)Excel文件。你將看到如下的代碼

?xml version="1.0"?>
?mso-application progid="Excel.Sheet"?>
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>MC SYSTEM/Author>
LastAuthor>MC SYSTEM/LastAuthor>
Created>2009-05-28T16:20:57Z/Created>
Company>MC SYSTEM/Company>
Version>11.5606/Version>
/DocumentProperties>
ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
WindowHeight>11250/WindowHeight>
WindowWidth>18180/WindowWidth>
WindowTopX>120/WindowTopX>
WindowTopY>75/WindowTopY>
ProtectStructure>False/ProtectStructure>
ProtectWindows>False/ProtectWindows>
/ExcelWorkbook>
Styles>
Style ss:ID="Default" ss:Name="Normal">
Alignment ss:Vertical="Center"/>
Borders/>
Font ss:FontName="宋體" x:CharSet="134" ss:Size="12"/>
Interior/>
NumberFormat/>
Protection/>
/Style>
/Styles>
Worksheet ss:Name="Sheet1">
Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
Row ss:>
Cell>Data ss:Type="String">org/Data>/Cell>
/Row>
/Table>
WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
Unsynced/>
Selected/>
Panes>
Pane>
Number>3/Number>
ActiveRow>3/ActiveRow>
ActiveCol>1/ActiveCol>
/Pane>
/Panes>
ProtectObjects>False/ProtectObjects>
ProtectScenarios>False/ProtectScenarios>
/WorksheetOptions>
/Worksheet>
Worksheet ss:Name="Sheet2">
Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"/>
WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
Unsynced/>
ProtectObjects>False/ProtectObjects>
ProtectScenarios>False/ProtectScenarios>
/WorksheetOptions>
/Worksheet>
Worksheet ss:Name="Sheet3">
Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"/>
WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
Unsynced/>
ProtectObjects>False/ProtectObjects>
ProtectScenarios>False/ProtectScenarios>
/WorksheetOptions>
/Worksheet>
/Workbook>

  其實(shí)這個(gè)就是將XML轉(zhuǎn)換成Excel最關(guān)鍵的部分。實(shí)際上這就是Excel對(duì)應(yīng)的XML格式。也就是說(shuō)按照這個(gè)格式來(lái)寫一個(gè)XML文件,然后用Excel打開,Excel會(huì)將這個(gè)文件以Excel的樣子正確的現(xiàn)實(shí)出來(lái)。

第二步:

  在.net項(xiàng)目中添加一個(gè)xslt文件。學(xué)過(guò)xslt的朋友都知道通過(guò)xslt可以將xml轉(zhuǎn)換成其他的格式??赡苡械呐笥堰€沒有理解我的意思。其實(shí)我們通過(guò)xslt將xml轉(zhuǎn)換成“第一步”中的格式,然后保存或者輸出到客戶端就完成了導(dǎo)出Excel的功能了。

對(duì)于第一步中的XML代碼我們要進(jìn)行一些修改,因?yàn)檫@是Excel自動(dòng)生成的,其中包含了大量的無(wú)用信息。修改后的代碼如下:

?xml version="1.0"?>
 ?mso-application progid="Excel.Sheet"?>
 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">
 
 Worksheet ss:Name="Sheet1">
  Table ss:ExpandedColumnCount="1" ss:ExpandedRowCount="1" x:FullColumns="1"
    x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
    Row ss:>
      Cell>

      Data ss:Type="String">

        city !--還記得嗎?這是第一步中輸入的city -->

      /Data>

     /Cell>
    /Row>
  /Table>
 /Worksheet>
 /Workbook>

到目前為止,這個(gè)代碼還沒有實(shí)際的用處。我們將這個(gè)代碼copy到創(chuàng)建的xslt文件中,并將xslt的一些語(yǔ)法加入到上面的代碼中,最后xslt文件將是這個(gè)樣子:

?xml version="1.0"?>
 xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 xsl:template match="/">
    
  ?mso-application progid="Excel.Sheet"?>
  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">
 
  Worksheet ss:Name="Sheet1">
    Table>
      xsl:for-each select="*">
       Row>
        Cell>
        Data ss:Type="String">
          xsl:value-of select="."/>
        /Data>
       /Cell>
        Cell>
        Data ss:Type="String">
           xsl:value-of select="."/>
        /Data>
       /Cell>
      /Row>
     /xsl:for-each>
    /Table>

  /Worksheet>
  /Workbook>
 
 /xsl:template>
/xsl:stylesheet>

保存這個(gè)xslt文件。

第三步:

編寫.net后臺(tái)代碼,我是通過(guò)一個(gè)按鈕事件觸發(fā)導(dǎo)出的。代碼如下:

private void button1_Click(object sender, EventArgs e)
{
 XmlDocument xdoc = new XmlDocument();
 xdoc.LoadXml("records>record>org>北京/org>/record>/records>");
 XslCompiledTransform xct = new XslCompiledTransform();
 xct.Load(Application.StartupPath+"\\excel.xslt");

 

 XmlTextWriter writer = new XmlTextWriter("output.xls", null);
 writer.WriteProcessingInstruction("xml", "version="1.0"");

 xct.Transform(xdoc, null,writer);
 writer.Close();

}

總結(jié):

其實(shí)這個(gè)方法的核心就是利用.net的xslt轉(zhuǎn)換功能將xml以一種特殊格式輸出出去。而這種格式可以利用Excel軟件自動(dòng)生成

您可能感興趣的文章:
  • asp.net導(dǎo)出EXCEL的功能代碼
  • asp.net DataGridView導(dǎo)出到Excel的三個(gè)方法[親測(cè)]
  • asp.net 讀取并顯示excel數(shù)據(jù)的實(shí)現(xiàn)代碼
  • ASP.NET操作EXCEL的總結(jié)篇
  • ASP.NET導(dǎo)出Excel打開時(shí)提示:與文件擴(kuò)展名指定文件不一致解決方法
  • asp.net生成Excel并導(dǎo)出下載五種實(shí)現(xiàn)方法
  • ASP.NET(C#)讀取Excel的文件內(nèi)容
  • asp.net使用npoi讀取excel模板并導(dǎo)出下載詳解
  • Asp.Net使用Npoi導(dǎo)入導(dǎo)出Excel的方法
  • asp.net中EXCEL數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的方法

標(biāo)簽:房產(chǎn) 德宏 玉林 泰安 佳木斯 呂梁 喀什

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET使用xslt將xml轉(zhuǎn)換成Excel》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266