Excel导出方法总结

有时候会时不时碰到这个问题
虽然已经交过作业了,但每次温习居然都有新的感受和发现。
于是,再写一篇总结(也不知道是不是以后还会再写总结? ),与大家分享一些所得。

我这里简单复习一下有哪几种可以导出Excel的方法:
1。 把excel作为数据库,导入数据
这里分成两种:
一种是把excel作为connection,通过insert数据加入;
另一种,则是利用COM对象,调用Excel的QueryTables的方法。

2。 直接引用COM组件,直接通过接口调用,并生成相应的Excel文件
这种方法对于性能要求要高一些。
对B/S结构的程序,基本不考虑这种方法。
对于无法关闭Excel进程的问题,今天看到一篇《立即释放.net下的com组件》
http://jjstar.cnblogs.com/archive/2004/11/08/61316.html
我要试试看


3。 利用生成HTML代码,保存为Excel文件
这个方法经常在B/S使用。


前三种方法的使用可以参考
Powerlc的BLog 的《asp.net里导出excel表方法汇总 》
http://powerlc.cnblogs.com/archive/2005/01/06/87512.aspx

浪漫十一狼的Net日志 的《导出excel的另外一种方法》
http://elevenwolf.cnblogs.com/archive/2004/08/21/35324.aspx




4。 不引用Excel接口,直接生成Excel文件的。
这里灵感之源写了一篇Blog
特别推荐:纯VB.NET代码直接生成Excel文件(不需要Excel)
http://www.cnblogs.com/unruledboy/archive/2004/07/07/22093.aspx
这里是C#版本
与灵感之源的vb.net对应的SmartExcel的C#版本

这个东西,我引用作者的一句话
引用不过说实话,没有一个WYSWYG的ide(如excel的designer),这段代码没什么作用。写一个excel文件,太复杂了。。。

5。 用MIME格式描述多内容Excel工作表
有点象生成HTML,但不完全是。
这是由 鸟食轩写的《用MIME格式描述多内容Excel工作表》
http://www.cnblogs.com/birdshome/archive/2005/07/12/190988.html
(鸟食轩是javascript应用的高手 ,他在自己Blog上面的百度搜索帖子功能,让我对javascript有了更多的理解)

这里已经说到有 5种方法,难道还有?

是啊,是啊

我再说两种,嘿嘿,

6。 Excel是可以存成xml
看看这个文件

在看看保存出来的Excel文件:
  1 <? xml version="1.0" ?>
  2 <? mso-application progid="Excel.Sheet" ?>
  3 < Workbook  xmlns ="urn:schemas-microsoft-com:office:spreadsheet"
  4  xmlns:o ="urn:schemas-microsoft-com:office:office"
  5  xmlns:x ="urn:schemas-microsoft-com:office:excel"
  6  xmlns:ss ="urn:schemas-microsoft-com:office:spreadsheet"
  7  xmlns:html ="http://www.w3.org/TR/REC-html40" >
  8   < DocumentProperties  xmlns ="urn:schemas-microsoft-com:office:office" >
  9    < Created > 1996-12-17T01:32:42Z </ Created >
 10    < LastSaved > 2006-02-17T13:16:06Z </ LastSaved >
 11    < Version > 11.5606 </ Version >
 12   </ DocumentProperties >
 13   < OfficeDocumentSettings  xmlns ="urn:schemas-microsoft-com:office:office" >
 14    < RemovePersonalInformation />
 15   </ OfficeDocumentSettings >
 16   < ExcelWorkbook  xmlns ="urn:schemas-microsoft-com:office:excel" >
 17    < WindowHeight > 4530 </ WindowHeight >
 18    < WindowWidth > 8505 </ WindowWidth >
 19    < WindowTopX > 480 </ WindowTopX >
 20    < WindowTopY > 120 </ WindowTopY >
 21    < AcceptLabelsInFormulas />
 22    < ProtectStructure > False </ ProtectStructure >
 23    < ProtectWindows > False </ ProtectWindows >
 24   </ ExcelWorkbook >
 25   < Styles >
 26    < Style  ss:ID ="Default"  ss:Name ="Normal" >
 27     < Alignment  ss:Vertical ="Bottom" />
 28     < Borders />
 29     < Font  ss:FontName ="宋体"  x:CharSet ="134"  ss:Size ="12" />
 30     < Interior />
 31     < NumberFormat />
 32     < Protection />
 33    </ Style >
 34    < Style  ss:ID ="s32" >
 35     < Alignment  ss:Horizontal ="Center"  ss:Vertical ="Center" />
 36     < Font  x:Family ="Swiss"  ss:Size ="16" />
 37    </ Style >
 38    < Style  ss:ID ="s34" >
 39     < Borders >
 40      < Border  ss:Position ="Bottom"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 41      < Border  ss:Position ="Left"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 42      < Border  ss:Position ="Right"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 43      < Border  ss:Position ="Top"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 44     </ Borders >
 45     < Font  x:Family ="Swiss"  ss:Size ="11"  ss:Bold ="1" />
 46     < Interior  ss:Color ="#CCFFCC"  ss:Pattern ="Solid" />
 47    </ Style >
 48    < Style  ss:ID ="s35" >
 49     < Alignment  ss:Horizontal ="Left"  ss:Vertical ="Bottom" />
 50     < Borders >
 51      < Border  ss:Position ="Bottom"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 52      < Border  ss:Position ="Left"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 53      < Border  ss:Position ="Right"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 54      < Border  ss:Position ="Top"  ss:LineStyle ="Continuous"  ss:Weight ="1" />
 55     </ Borders >
 56     < Font  x:Family ="Swiss"  ss:Size ="11" />
 57    </ Style >
 58   </ Styles >
 59   < Worksheet  ss:Name ="Sheet1" >
 60    < Table  ss:ExpandedColumnCount ="2"  ss:ExpandedRowCount ="22"  x:FullColumns ="1"
 61    x:FullRows ="1"  ss:DefaultColumnWidth ="54"  ss:DefaultRowHeight ="14.25" >
 62     < Column  ss:AutoFitWidth ="0"  ss:Width ="92.25" />
 63     < Column  ss:AutoFitWidth ="0"  ss:Width ="123" />
 64     < Row  ss:AutoFitHeight ="0"  ss:Height ="37.5" >
 65      < Cell  ss:MergeAcross ="1"  ss:StyleID ="s32" >< Data  ss:Type ="String" > test excel Xml </ Data ></ Cell >
 66     </ Row >
 67     < Row  ss:Height ="15.75" >
 68      < Cell  ss:StyleID ="s34" >< Data  ss:Type ="String" > testCol1 </ Data ></ Cell >
 69      < Cell  ss:StyleID ="s34" >< Data  ss:Type ="String" > testCol2 </ Data ></ Cell >
 70     </ Row >
 71     < Row  ss:Height ="15" >
 72      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 3432 </ Data ></ Cell >
 73      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 42343223 </ Data ></ Cell >
 74     </ Row >
 75     < Row  ss:Height ="15" >
 76      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 3432 </ Data ></ Cell >
 77      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 42343223 </ Data ></ Cell >
 78     </ Row >
 79     < Row  ss:Height ="15" >
 80      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 3432 </ Data ></ Cell >
 81      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 42343223 </ Data ></ Cell >
 82     </ Row >
 83     < Row  ss:Height ="15" >
 84      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 3432 </ Data ></ Cell >
 85      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 42343223 </ Data ></ Cell >
 86     </ Row >
 87     < Row  ss:Height ="15" >
 88      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 3432 </ Data ></ Cell >
 89      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 42343223 </ Data ></ Cell >
 90     </ Row >
 91     < Row  ss:Height ="15" >
 92      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 3432 </ Data ></ Cell >
 93      < Cell  ss:StyleID ="s35" >< Data  ss:Type ="Number" > 42343223 </ Data ></ Cell >
 94     </ Row >
 95   
 96    </ Table >
 97    < WorksheetOptions  xmlns ="urn:schemas-microsoft-com:office:excel" >
 98     < Print >
 99      < ValidPrinterInfo />
100      < PaperSizeIndex > 9 </ PaperSizeIndex >
101      < HorizontalResolution > 300 </ HorizontalResolution >
102      < VerticalResolution > 300 </ VerticalResolution >
103     </ Print >
104     < Zoom > 89 </ Zoom >
105     < Selected />
106     < Panes >
107      < Pane >
108       < Number > 3 </ Number >
109       < RangeSelection > R1C1:R22C2 </ RangeSelection >
110      </ Pane >
111     </ Panes >
112     < ProtectObjects > False </ ProtectObjects >
113     < ProtectScenarios > False </ ProtectScenarios >
114    </ WorksheetOptions >
115   </ Worksheet >
116   < Worksheet  ss:Name ="Sheet2" >
117    < Table  ss:ExpandedColumnCount ="0"  ss:ExpandedRowCount ="0"  x:FullColumns ="1"
118    x:FullRows ="1"  ss:DefaultColumnWidth ="54"  ss:DefaultRowHeight ="14.25" />
119    < WorksheetOptions  xmlns ="urn:schemas-microsoft-com:office:excel" >
120     < ProtectObjects > False </ ProtectObjects >
121     < ProtectScenarios > False </ ProtectScenarios >
122    </ WorksheetOptions >
123   </ Worksheet >
124   < Worksheet  ss:Name ="Sheet3" >
125    < Table  ss:ExpandedColumnCount ="0"  ss:ExpandedRowCount ="0"  x:FullColumns ="1"
126    x:FullRows ="1"  ss:DefaultColumnWidth ="54"  ss:DefaultRowHeight ="14.25" />
127    < WorksheetOptions  xmlns ="urn:schemas-microsoft-com:office:excel" >
128     < ProtectObjects > False </ ProtectObjects >
129     < ProtectScenarios > False </ ProtectScenarios >
130    </ WorksheetOptions >
131   </ Worksheet >
132 </ Workbook >
133


yes,就是生成这么一个文件就可以了。
你可以把xml后缀名改成.xls,用Excel打开是一模一样的东西。
这个文件可以很快得到,只需将目前手里的Excel文件另存为xml(excel 2000也支持),


7。使用vbScript来生成Excel
以前我有个同事写了一个非常复杂的asp程序导出excel,实际上使用的是asp+vbScript来生成Excel,
(相比C#操作Excel,vsscript更有效率优势。)
但后来,我们过渡到.net程序了,我们也在没有管vbscript来导出Excel,因为它过于繁杂而不可维护和重用(其他项目中)。

再后来,通过对象编程的实践,才发现抽象能力是OPP思想中重要的能力,提炼问题核心建立相应模型,再来谈论解决方法。
 单用vbscript来生成的确很麻烦,而且不好维护。
我们需要加入自己的模型。
 

这篇blog的地址《作一个Excel exporter的组件》
http://www.cnblogs.com/king_astar/archive/2005/12/25/304306.aspx

第三方方法
Eunge
《报表的开发利器-ExcelQuicker》
http://lovinger2000.cnblogs.com/archive/2005/06/27/181853.aspx

转载于:https://www.cnblogs.com/raymond19840709/archive/2009/05/05/1449343.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值