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;