快速导出数据到Excel(一):利用剪贴板

2016-02-19 19:35 0 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享快速导出数据到Excel(一):利用剪贴板,希望可以对大家能有小小的帮助。

【 tulaoshi.com - 编程语言 】

将数据导出到Excel的方法有多种,速度有快慢之分,我用过三种方法,速度都比较快,下面的一种是通过剪贴板进行,不过在个别W2K以上的系统,由于字符集编码不同,中文内容导出到Excel后可能变成乱码。

  //显示进度条面板
  procedure ShowProgress(Min, Max, Position: integer);
  begin
      pnlProgress.Left := (ClientWidth - pnlProgress.Width) div 2;
      ProgressBar1.Min := Min;
      ProgressBar1.Max := Max;
      ProgressBar1.Position := Position;
      pnlProgress.Visible := true;
      pnlProgress.Update;
  end;

  //将数据库数据添加到DataList
  function GetDataList(DataList: TStringList): Boolean;
  var
      S: string;
      i: integer;
  begin
      Result := true;
      DataList.Clear;
      try try
          DataList.Add('这是标题');
          ProgressBar1.StepIt;
          ADOQuery1.DisableControls;

          with ADOQuery1 do begin
              First;
              S := '';
              for i:=0 to FieldCount-1 do
                  if Fields[i].Visible then
                      S := S + Fields[i].DisplayLabel + #9;  //先导出字段名,用制表符分开
              DataList.Add(S);
              ProgressBar1.StepIt;

              While Not Eof do begin
                  S := '';
                  for i:=0 to FieldCount-1 do
                      if Fields[i].Visible then
                          S := S + Fields[i].DisplayText + #9;//导出数据显示内容
                  DataList.Add(S);
                  ProgressBar1.StepIt;
                  Application.ProcessMessages;
                  Next;
              end;
          end;
      except
          Result := false;
      end;
      finally
          ADOQuery1.EnableControls;
      end;
  end;

  function ExportByClipboard: Boolean;
  var
      List: TStringList;
      FileName: string;
      ASheet: Variant;
  begin
      ShowProgress(0, ADOQuery1.RecordCount+3, 0);
      Result := true;
      FileName := 'C:abc.xls';
      Excel.Connect;  //Excel: TExcelApplication控件
      try try
          Excel.DisplayAlerts[0] := false;
          Excel.Visible[0] := false;
          Excel.Caption := 'XXXXX导出(Excel)';
          Excel.Workbooks.Add(xlWBATWorksheet, 0);
          ASheet := Excel.Worksheets.Item[1];
          //设定默认格式
          Excel.Cells.Font.Name := '宋体';
          Excel.Cells.Font.Size := 10;
          Excel.Cells.VerticalAlignment := 2;
          //设定标题格式
          Excel.Range['A1', 'Z1'].HorizontalAlignment := 7;
          Excel.Range['A1', 'Z1'].Font.Size := 16;
          Excel.Range['A1', 'Z1'].RowHeight := 22;
          Excel.Range['A2', 'Z2'].HorizontalAlignment := 3;
          Excel.Range['A2', 'Z2'].Font.Bold := true;

          List := TStringList.Create;
          try try
              if GetDataList(List) then begin
                  //锁定计算机并将数据粘到Excel里
                  BlockInput(true);
                  Clipboard.AsText := List.Text;
                  ASheet.Paste;
                  Clipboard.Clear;
                  BlockInput(false);
                  ProgressBar1.StepIt;
              end;
          finally
              List.Free;
          end;
          except
              Result := false;
              pnlProgress.Visible := false;
              Exit;
          end;
          ProgressBar1.StepIt;
          Excel.Workbooks.Item[1].SaveCopyAs(FileName, 0);
          Excel.Workbooks.Item[1].Close(false, FileName, 0, 0);
      finally
          Excel.Quit;
          Excel.Disconnect;
      end;
      except
          Result := false;
          pnlProgress.Visible := false;
          Exit;
      end;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

      ProgressBar1.Position := ProgressBar1.Max;
      MessageBox(Handle, PChar('数据成功导出到' + FileName), '导出数据', MB_ICONINFORMATION or MB_OK);
      pnlProgress.Visible := false;
  end;
  

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

来源:https://www.tulaoshi.com/n/20160219/1621373.html

延伸阅读
标签: autocad教程
在AutoCAD中可利用剪贴板、OLE等方式来与其他Windows应用程序进行交互,如电子表格、文字处理文档和动画图像等程序。此外,AutoCAD还可以通过图形转换来使用或创建其他格式的图形。 剪贴板是Windows系统中各应用程序之间进行数据交换的主要方式之一,AutoCAD中提供了多个命令来使用剪贴板。 COPYCLIP命令 该命令用于将选定...
如何使用微云剪贴板?   请先运行微云=》复制一段文字内容=》复制后同时按快捷键Ctrl+D,文字内容即可发送到微云同一帐号的其他设备(如手机端)。
什么是微云剪贴板?   微云剪贴板是一个便捷工具。通过它,您可以在手机上复制,在电脑上粘贴;您也可以在电脑上复制,在手机上粘贴。 比如: 1、从手机上复制网站地址,用电脑的浏览器打开; 2、从电脑上复制电话号码,在手机上拨打。
如何使用微云剪贴板 只要登录同一账号,您就可以将电脑上复制的内容粘贴在手机上了。 运行微云=》复制一段文字内容=》复制后同时按快捷键Ctrl+D,文字内容即可发送到同一账号的其他设备。         注 :更多精彩教程请关注图老师电脑教程栏目
标签: 微云 电脑 网络
如何使用微云剪贴板? 微云剪切板可以实现电脑上复制,然后在手机上粘贴的功能,非常的强大与方便,那么我该怎么来实现这一操作呢,下就是操作的步骤, 首先我们需要打开电脑的微云客户端,先使用Ctrl+C复制我们需要的文字内容,然后使用Ctrl+D发送,之后我们就可以打开手机的微云,在手机端的微云里面找到更多选项,在更多下面选择剪贴板,最...

经验教程

957

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部