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;