zoukankan      html  css  js  c++  java
  • LISTVIEW导出到EXCEL的通用函数

    LISTVIEW导出到EXCEL的通用函数
    2011-08-25         作者:李海彬   阅读:470

        使用Delphi开发数据库系统软件时,经常会使用Listview控件作为数据库的容器,而将数据导出到Excel中,也经常要用到.
        首先在FROM中添加一个BUTTON控件,一个LISTVIEW控件(设成vsReport),一个SaveDialog控件.
        下面给出将Listview控件直接导出到Excel表格中的通用代码:

    use comobj;
    //直接将LISTVIEWR控件作为入参.
    procedure TForm1.Excel_lv(lvpt:tlistview);
    var XL,SHEET:variant;
        SfileName:string;
        j,i:integer;
    BEGIN
    try
      if not  savedialog1.Execute then exit;
      sfilename:=savedialog1.FileName ;
      //创建一个EXCEL
      XL:=CreateOleObject('Excel.Application');
      XL.WorkBooks.add;
      //设SHEETS1为活动页
      SHEET:=XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1];
      //设置列宽,这个可以根据实际情况修改
      XL.rANGE['A1','A1'].cOLUMNwIDTH:=10;
      XL.rANGE['B1','B1'].cOLUMNwIDTH:=10;
      XL.rANGE['C1','C1'].cOLUMNwIDTH:=10;
      XL.rANGE['D1','D1'].cOLUMNwIDTH:=10;
      XL.rANGE['E1','E1'].cOLUMNwIDTH:=10;
      XL.rANGE['F1','F1'].cOLUMNwIDTH:=10;
      XL.rANGE['G1','G1'].cOLUMNwIDTH:=10;
      XL.rANGE['H1','H1'].cOLUMNwIDTH:=10;
      XL.rANGE['I1','I1'].cOLUMNwIDTH:=10;
      XL.rANGE['J1','J1'].cOLUMNwIDTH:=10;
      XL.rANGE['K1','K1'].cOLUMNwIDTH:=10;
      XL.rANGE['L1','L1'].cOLUMNwIDTH:=10;
      //第一行,将LISTVIEW的标题先导出到EXCEL
      for i:=1 to lvpt.Columns.Count  do
         sheet.cells[1,i]:=lvpt.Columns[i-1].Caption ;
      //将LISTVEW里各行列的内容导出
      for j:=0 to lvpt.Items.Count -1 do
        for i:=1 to lvpt.Columns.Count do
         begin   //由于将数字字符串如00011导出到EXCEL时,它会自动转成数值11,
                 //所以要在前面加'号,定义为字符串.
          if i=1 then sheet.cells[j+2,i]:=''''+lvpt.Items[j].Caption
                 else sheet.cells[j+2,i]:=''''+lvpt.Items[j].SubItems [i-2];
         end;
      //写入EXCEL文件
      XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1].SaveAs(SFilename);
      XL.Quit;
    except
      messagebox(handle,'对不起,您可能没有安装Excel或文件目录错误!','错误',MB_OK+MB_ICONSTOP);
      XL.WORKBOOKS[XL.WorkBooks.Count].SHEETS[1].SaveAs(SFilename);
      XL.Quit;
    end;
    end;
    //执行
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      excel_lv(listview1);
    end;

      以上代码由于是对所有的LISTVIEW通用的,所以有些地方处理还是有点不好,这是没有办法的事.

  • 相关阅读:
    java oop第09章_JDBC02(CRUD操作)
    java 与日期转换相关的方法(java.util.date类型和java.sql.date类型互相转换)、随机字符串生成方法、UUID生产随机字符串
    Java oop第08章_JDBC01(入门)
    java 数组中的数值反转输出
    java oop第07章_集合框架
    Java oop创建自定义异常
    java oop遍历List和Map的几种方法
    java oop第06章_异常处理
    Java oop第05章_多态、接口
    信开发 新浪SAE开发平台 验证Token 一直失败
  • 原文地址:https://www.cnblogs.com/hssbsw/p/2533071.html
Copyright © 2011-2022 走看看