假如我将一个数据库中的内容放入listview中,如何直接将listview表中的数据导入到excell中

解决方案 »

  1.   

    我自己写了一个函数你调用就可以了
    function save(listview:tlistview):boolean;
     var
    myfile:tfilename;
    s:tlistview;
    i,j,k,l,p,q:integer;
    save:tsavedialog;
    sa,sn,sb:array of string;
    excelapp:olevariant;
      begin
        result:=true;
        s:=listview;
        save:=tsavedialog.Create(application);
        save.FileName:='文档';
        save.Filter:='*.xls';
     if save.Execute then
          begin
            myfile:=save.FileName+'.xls';
              try
               screen.Cursor:=crhourglass;
               excelapp:=createoleobject('excel.application');
               i:=s.Items.Count;
                   if i=0 then
                      begin
                        application.MessageBox('在此控件中没有你要导出的数据','系统提示!');
                        screen.Cursor:=crdefault;
                      end
                   else
                       begin
                          try                          j:=s.Columns.Count;
                                  setlength(sa,j);
                                  setlength(sb,i);
                                  excelapp.workbooks.add;
                                      for l:=0 to j-1 do
                                         begin
                                             sa[l]:=s.column[l].Caption ;
                                             excelapp.activesheet.columns[l+1].columnwidth:=length(sa[l])+10;
                                             excelapp.cells[1,l+1].value:=sa[l];
                                        end;
                                      for k:=0 to i-1 do
                                         begin
                                            p:=s.Items.Item[k].SubItems.Count;
                                            setlength(sn,p);
                                            sb[k]:=s.Items.Item[k].Caption;
                                            excelapp.cells[k+2,1]:=sb[k];
                                                  for q:=0 to p-1 do
                                                     begin
                                                        sn[q]:=s.Items.Item[k].SubItems.Strings[q];
                                                        excelapp.cells[k+2,q+2]:=sn[q];
                                                      end;
                                         end;
                               try
                                      excelapp.activeworkbook.SaveAs(myfile);
                               except
                               exit;                           end;             finally
                    screen.Cursor:=crdefault;
                      sa:=nil;
                      sb:=nil;
                      sn:=nil;
                      excelapp.quit;
                      save.Free;
                   end;
                   end;
              except
                 application.MessageBox('未安装此软件或运行期错误!','系统提示')
              end;
          end;
          end;
    在你的
    private
        { Private declarations }
      public
        { Public declarations }
      end;
    function save(listview:tlistview):boolean;/*在这里声明一下就可以用了;
     var
      frmmain: Tfrmmain;
    你在程序里面键入save(listview1);就可以把listview1里面显示的数据导入到excel中去了,很方便的
    记得给分哟!!!implementation