• 将 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;  

  • 相关阅读:
    创建表头固定,表体可滚动的GridView(转)
    正则表达式实现资料验证的技术总结 (转)
    通过样式表实现固定表头和列 (转)
    如何把string解析为int?(转)
    代码设计简单规范 (转)
    取存储过程结果集
    JS对select动态添加options操作[IE&FireFox兼容]
    多UpdatePanel
    ASP.NET页面如何引发PostBack事件 转
    asp.net 页面回传
  • 原文地址:https://www.cnblogs.com/beeone/p/1792346.html
Copyright © 2020-2023  润新知