现在的位置: 首页 > 综合 > 正文

TDBGridEh导出Excel表

2014年02月25日 ⁄ 综合 ⁄ 共 1999字 ⁄ 字号 评论关闭

uses Variants;

 

procedure DBGridSaveToExcel(DbGridEh:TDBGridEh);
var
  sFileName:string;
  ExcelObj, Excel, WorkBook, Sheet1: OleVariant;
  SaveDialog: TSaveDialog;
  Row1, Col1, FieldIndex, i: Integer;
  OldCursor: TCursor;
  FBookMark: TBookMark;
begin
  SaveDialog := TSaveDialog.Create(nil);
  SaveDialog.Filter := 'Microsoft Excel 文件|*.xls;*.xlsx';
  //SaveDialog.DefaultExt := '.xls';
  UpdateWindow(GetActiveWindow);
  sFileName := '';
  if SaveDialog.Execute then
    sFileName := SaveDialog.FileName;
  SaveDialog.Free;
  if sFileName='' then
    exit;
  try
    ExcelObj := CreateOleObject('Excel.Sheet');
    Excel := ExcelObj.Application;
    Excel.Visible := false;
    WorkBook := Excel.Workbooks.Add;
    Sheet1 := WorkBook.Sheets[1];
  except
    Gt_ShowMessage('提示', '无法调用Mircorsoft Excel! ' + chr(13) + chr(10) +'请检查是否安装了Mircorsoft Excel!', mtWarning);
    Exit;
  end;
  Row1 := 1;
  Col1 := 1;
  for FieldIndex := 0 to DbGridEh.Columns.Count-1 do
  begin
    if DbGridEh.Columns[FieldIndex].Visible=true then
    begin
      Sheet1.Columns[Col1].NumberFormatLocal:='@'; //设置该列为文本格式
      Sheet1.Cells(Row1, Col1) := DbGridEh.Columns[FieldIndex].Title.Caption;
      Inc(Col1);
    end;
  end;
  DBGridEh.DataSource.DataSet.DisableControls;
  FBookMark := DBGridEh.DataSource.DataSet.GetBookmark;
  OldCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  try
    try
      DBGridEh.DataSource.DataSet.First;
      while not DBGridEh.DataSource.DataSet.Eof do
      begin
        inc(Row1);
        Col1 := 1;
        for i := 0 to DBGridEh.DataSource.DataSet.FieldCount - 1 do
        begin
          if DBGridEh.Columns[i].Visible=true then
          begin
            Sheet1.Cells(Row1, Col1) := DBGridEh.DataSource.DataSet.Fields[i].AsString;
            Inc(Col1);
          end;
        end;
        DBGridEh.DataSource.DataSet.Next;
      end;

      WorkBook.SaveAs(sFileName);

      ShowMessage('导出成功。');

    except
      ShowMessage( '导出失败,请重新导出。');
    end;
  finally
    DBGridEh.DataSource.DataSet.GotoBookmark(FBookMark);
    DBGridEh.DataSource.DataSet.EnableControls;
    Screen.Cursor := OldCursor;
    Excel.Quit;
    Excel := Unassigned; 
  end;
end;

 

www.taoyou100.cn  淘友100 满意100,提供给您最信赖的网络购物享受。

抱歉!评论已关闭.