zoukankan      html  css  js  c++  java
  • 将 DBGrid 中的内容输出至 Excel 或 ClipBoard

    //注意:下面的方法必须包含 ComObj, Excel97 单元
      //-----------------------------------------------------------
      // if toExcel = false, export dbgrid contents to the Clipboard
      // if toExcel = true, export dbgrid to Microsoft Excel
      procedure ExportDBGrid(toExcel: Boolean);
      var
        bm: TBookmark;
        col, row: Integer;
        sline: String;
        mem: TMemo;
        ExcelApp: Variant;
      begin
        Screen.Cursor := crHourglass;
        DBGrid1.DataSource.DataSet.DisableControls;
        bm := DBGrid1.DataSource.DataSet.GetBookmark;
        DBGrid1.DataSource.DataSet.First;
     
        // create the Excel object
        if toExcel then
        begin
          ExcelApp := CreateOleObject('Excel.Application');
          ExcelApp.WorkBooks.Add(xlWBatWorkSheet);
          ExcelApp.WorkBooks[1].WorkSheets[1].Name := 'Grid Data';
        end;
     
        // First we send the data to a memo
        // works faster than doing it directly to Excel
        mem := TMemo.Create(Self);
        mem.Visible := false;
        mem.Parent := MainForm;
        mem.Clear;
        sline := '';
     
        // add the info for the column names
        for col := 0 to DBGrid1.FieldCount-1 do
          sline := sline + DBGrid1.Fields[col].DisplayLabel + #9;
        mem.Lines.Add(sline);
     
        // get the data into the memo
        for row := 0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
        begin
          sline := '';
          for col := 0 to DBGrid1.FieldCount-1 do
            sline := sline + DBGrid1.Fields[col].AsString + #9;
          mem.Lines.Add(sline);
          DBGrid1.DataSource.DataSet.Next;
        end;
     
        // we copy the data to the clipboard
        mem.SelectAll;
        mem.CopyToClipboard;
     
        // if needed, send it to Excel
        // if not, we already have it in the clipboard
        if toExcel then
        begin
          ExcelApp.Workbooks[1].WorkSheets['Grid Data'].Paste;
          ExcelApp.Visible := true;
        end;
     
        FreeAndNil(mem);
      //  FreeAndNil(ExcelApp);
        DBGrid1.DataSource.DataSet.GotoBookmark(bm);
        DBGrid1.DataSource.DataSet.FreeBookmark(bm);
        DBGrid1.DataSource.DataSet.EnableControls;
        Screen.Cursor := crDefault;
      end;  

  • 相关阅读:
    c++读取文本文件
    C++在设计和使用智能指针
    spring mvc 控制器方法传递一些经验对象的数组
    unity3D实际的原始视频游戏开发系列讲座10它《战斗:外来入侵》在第一季度游戏开发
    Docker安装应用程序(Centos6.5_x64)
    VC和gcc在保证功能static对线程安全的差异变量
    POJ 1252 Euro Efficiency
    extjs_03_grid(添加数据)
    BZOJ 1212 HNOI2004 L语言 AC自己主动机(Trie树)+动态规划
    OpenGL开发时,fatal error C1083: 无法打开包括文件:“glglut.h”: No such file or directory
  • 原文地址:https://www.cnblogs.com/beeone/p/1792346.html
Copyright © 2011-2022 走看看