delphi stringgrid導出爲excel

procedure TLiYQBYJL.btnBYJLTJDCClick(Sender: TObject);
var
  ExcelApp, workbook, sheet: Variant;
  col, row, j, i: Integer;
  str: string;
begin
  inherited;
  dlgSave1.Filter := 'Excel2007格式文件|*.xlsx|Excel2003格式文件|*.xls';
  try
    ExcelApp := CreateOleObject('Excel.Application'); (* 建立一個Excel的OLE對象,使用OLE去建立Excel文件時,須要uses ComObj *)
  except
    InformationDlg(Tit, '請安裝EXCEL');
    Exit;
  end;
  workbook := ExcelApp.WorkBooks.Add;               (* 建立一個WorkBook *)
  sheet := ExcelApp.Sheets[1];                      (* 建立一個Sheet變量 *)
  if not cdsBYJLTJ.IsEmpty then
  begin
    sheet.cells[1, 1] := '保養項目';
    for col := 1 to cdsBYJLTJ.FieldCount - 1 do
    begin
      sheet.cells[1, col + 1] := cdsBYJLTJ.Fields[col].FieldName;
    end;
    with cdsBYJLTJ do
    begin
      First;
      i := 2; //行  j列
      while not Eof do
      begin
        for col := 0 to FieldCount - 1 do
        begin
          sheet.Cells[i, col + 1] := cdsBYJLTJ.Fields[col].AsString;
        end;
        Inc(i);
        Next;
      end;
    end;
  end;
  for col := 1 to SGBYJLTJ.ColCount do
  begin
    ExcelApp.ActiveSheet.Columns[col].Columnwidth := 10;
  end;
     ExcelApp.DisplayAlerts := false; //不提示任何警告信息
  if dlgSave1.Execute then    (* 若是點擊了保存對話框的"保存"按鍵的話,將當前活動的Workbook保存到SaveDialog指定的位置 *)
  begin
    if FileExists(dlgSave1.FileName) then
    begin
      if not QuestionDlg(Tit, '文件名已存在,是否覆蓋?') then
      begin
        Exit;
      end
      else
      begin
        ExcelApp.ActiveWorkbook.saveas(dlgSave1.FileName);
      end;

    end;
//    ExcelApp.ActiveWorkbook.saveas(dlgSave1.FileName);
  end
  else                           (* 若是點擊了保存對話框的"取消"按鍵的話,放棄存盤,這句話必定要加上,不然,在點擊"取消"按鍵時,會出現問題 *)
    ExcelApp.ActiveWorkBook.Saved := True;
//  ExcelApp.DisplayAlerts := false; //不提示任何警告信息
  workbook.Close;  (* 最後,將WorkSheet關閉 *)
  ExcelApp.quit;   (* 退出ExcelApp *)
  ExcelApp := unassigned; (* 使用unassigned時,要uses Variants *)
end;
相關文章
相關標籤/搜索