主页 > 知识库 > ASP.NET使用xslt将xml转换成Excel

ASP.NET使用xslt将xml转换成Excel

热门标签:呼叫中心 解决方案 服务器配置 电子围栏 硅谷的囚徒呼叫中心 苹果 智能手机 地方门户网站

序:

  最近在给客户做一个管理系统的时候,客户提出要将查询结果导出到Excel。对于还是实习生的我倍感压力,于是找了点资料。网上有个示例,其中方法十分简单。于是照猫画虎,把方法和心得与大家分享。OK,Let`s go

第一步:

  创建一个Excel文件(就是 普通的Excel),在第一个单元格输入“city”,然后选择“另存为”,此时弹出保存窗口。注意:将保持格式选择为“XML 表格(*.xml)”,点击保存。完毕后用记事本打开这个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>

  其实这个就是将XML转换成Excel最关键的部分。实际上这就是Excel对应的XML格式。也就是说按照这个格式来写一个XML文件,然后用Excel打开,Excel会将这个文件以Excel的样子正确的现实出来。

第二步:

  在.net项目中添加一个xslt文件。学过xslt的朋友都知道通过xslt可以将xml转换成其他的格式。可能有的朋友还没有理解我的意思。其实我们通过xslt将xml转换成“第一步”中的格式,然后保存或者输出到客户端就完成了导出Excel的功能了。

对于第一步中的XML代码我们要进行一些修改,因为这是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">
 
 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>

到目前为止,这个代码还没有实际的用处。我们将这个代码copy到创建的xslt文件中,并将xslt的一些语法加入到上面的代码中,最后xslt文件将是这个样子:

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

保存这个xslt文件。

第三步:

编写.net后台代码,我是通过一个按钮事件触发导出的。代码如下:

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();

}

总结:

其实这个方法的核心就是利用.net的xslt转换功能将xml以一种特殊格式输出出去。而这种格式可以利用Excel软件自动生成

您可能感兴趣的文章:
  • asp.net导出EXCEL的功能代码
  • asp.net DataGridView导出到Excel的三个方法[亲测]
  • asp.net 读取并显示excel数据的实现代码
  • ASP.NET操作EXCEL的总结篇
  • ASP.NET导出Excel打开时提示:与文件扩展名指定文件不一致解决方法
  • asp.net生成Excel并导出下载五种实现方法
  • ASP.NET(C#)读取Excel的文件内容
  • asp.net使用npoi读取excel模板并导出下载详解
  • Asp.Net使用Npoi导入导出Excel的方法
  • asp.net中EXCEL数据导入到数据库的方法

标签:房产 德宏 玉林 泰安 佳木斯 海口 吕梁 喀什

巨人网络通讯声明:本文标题《ASP.NET使用xslt将xml转换成Excel》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266