zoukankan      html  css  js  c++  java
  • 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


     

  • 相关阅读:
    INFO: InstallShield不同版本对中文字符串的支持程度
    Basic INFO: InstallShield 2012安装过程
    [Android] 打印Log的行号、函数、类名
    gridgian 网格计算
    Activity及Dialog的全透明
    设计工具
    ps 多图层扣图
    spket js ide
    a 的样式
    js开发规范
  • 原文地址:https://www.cnblogs.com/king_astar/p/332785.html
Copyright © 2011-2022 走看看