序:
最近在给客户做一个管理系统的时候,客户提出要将查询结果导出到Excel。对于还是实习生的我倍感压力,于是找了点资料。www.coolite.com上有个示例,其中方法十分简单。于是照猫画虎,把方法和心得与大家分享。OK,Let`s
go
第一步:
创建一个Excel文件(就是
普通的Excel),在第一个单元格输入“city”,然后选择“另存为”,此时弹出保存窗口。注意:将保持格式选择为“XML
表格(*.xml)”,点击保存。完毕后用记事本打开这个Excel文件。你将看到如下的代码
version="1.0"?>
progid="Excel.Sheet"?>
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">
xmlns="urn:schemas-microsoft-com:office:office">
MC
SYSTEM
MC
SYSTEM
2009-05-28T16:20:57Z
MC
SYSTEM
11.5606
xmlns="urn:schemas-microsoft-com:office:excel">
11250
18180
120
75
False
False
ss:Vertical="Center"/>
ss:Size="12"/>
ss:ExpandedRowCount="1" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54"
ss:DefaultRowHeight="14.25">
ss:Type="String">org
xmlns="urn:schemas-microsoft-com:office:excel">
3
3
1
False
False
ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54"
ss:DefaultRowHeight="14.25"/>
xmlns="urn:schemas-microsoft-com:office:excel">
False
False
ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54"
ss:DefaultRowHeight="14.25"/>
xmlns="urn:schemas-microsoft-com:office:excel">
False
False
其实这个就是将XML转换成Excel最关键的部分。实际上这就是Excel对应的XML格式。也就是说按照这个格式来写一个XML文件,然后用Excel打开,Excel会将这个文件以Excel的样子正确的现实出来。
第二步:
在.net项目中添加一个xslt文件。学过xslt的朋友都知道通过xslt可以将xml转换成其他的格式。可能有的朋友还没有理解我的意思。其实我们通过xslt将xml转换成“第一步”中的格式,然后保存或者输出到客户端就完成了导出Excel的功能了。
对于第一步中的XML代码我们要进行一些修改,因为这是Excel自动生成的,其中包含了大量的无用信息。修改后的代码如下:
progid="Excel.Sheet"?>
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">
ss:Name="Sheet1">
ss:ExpandedRowCount="1" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54"
ss:DefaultRowHeight="14.25">
city
到目前为止,这个代码还没有实际的用处。我们将这个代码copy到创建的xslt文件中,并将xslt的一些语法加入到上面的代码中,最后xslt文件将是这个样子:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
match="/">
progid="Excel.Sheet"?>
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">
ss:Type="String">