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;  

  • 相关阅读:
    Java的常量接口思考,项目中的常量是放在接口里还是放在类里呢?
    有些时候会看到url参数上出现%BF之类
    mysql 取整
    MySQL使用判断
    java 获得当前时间前指定几个小时的时间?
    SVN集成compare4比较软件
    JAVA去重
    连接SQL常见问题
    springMVC项目部署 服务器启动spring容器报错bean未从类加载器中找到
    Java 中Timer和TimerTask 定时器和定时任务使用的例子
  • 原文地址:https://www.cnblogs.com/beeone/p/1792346.html
Copyright © 2011-2022 走看看