Procedure TOutPutMaintain_Detail_F.DbgridToExcel(Title: String; DbGrid: TbsSkinDBGrid);
Var
ExcelApp, WorkBook: Variant;
i, j: Integer;
Row, Col: Integer;
FieldName: String;
DataSet: TDataSet;
S: String;
Begin
// 数据发送到 Excel
Try
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := CreateOleObject('Excel.Sheet');
Except
Application.MessageBox('你的机器里未安装Microsoft Excel. ', '', 32);
exit;
End; Application.ProcessMessages;
WorkBook := ExcelApp.WorkBooks.Add;
Col := 1;
ExcelApp.Cells(2, Col) := Title;
Row := 1;
DataSet := DbGrid.DataSource.DataSet;
For i := 0 To DbGrid.Columns.Count - 1 Do
Begin
If DbGrid.Columns[i].Visible Then
Begin
FieldName := DbGrid.Columns[i].Title.Caption;
ExcelApp.Cells(Row, Col) := FieldName;
Col := Col + 1;
End;
End; Row := Row + 1; DataSet.First;
While Not DataSet.Eof Do
Begin
Col := 1;
For j := 0 To DbGrid.Columns.Count - 1 Do
Begin
FieldName := DbGrid.Columns[j].FieldName;
ExcelApp.Cells(Row, Col) := ' ' + DataSet.FieldByName(FieldName).AsString + ' ';
Col := Col + 1;
End;
Row := Row + 1;
DataSet.Next;
End; ExcelApp.ActiveWorkBook.SaveAs(Title);
ExcelApp.Quit;
ExcelApp := Unassigned;
End;
这个方法导出excel是没问题的,但是如果填写要保存的文件名已存在的话,excel会提示是否覆盖那个已存在的文件这时候点"是"也没问题,主要是点了"否"活着"取消"前台就会报错如下"类workbook的SaveAs的方法无效 错误eoleException".这是什么原因呢?各位高手能给小弟一个答复吗?万分感谢!!
Var
ExcelApp, WorkBook: Variant;
i, j: Integer;
Row, Col: Integer;
FieldName: String;
DataSet: TDataSet;
S: String;
Begin
// 数据发送到 Excel
Try
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := CreateOleObject('Excel.Sheet');
Except
Application.MessageBox('你的机器里未安装Microsoft Excel. ', '', 32);
exit;
End; Application.ProcessMessages;
WorkBook := ExcelApp.WorkBooks.Add;
Col := 1;
ExcelApp.Cells(2, Col) := Title;
Row := 1;
DataSet := DbGrid.DataSource.DataSet;
For i := 0 To DbGrid.Columns.Count - 1 Do
Begin
If DbGrid.Columns[i].Visible Then
Begin
FieldName := DbGrid.Columns[i].Title.Caption;
ExcelApp.Cells(Row, Col) := FieldName;
Col := Col + 1;
End;
End; Row := Row + 1; DataSet.First;
While Not DataSet.Eof Do
Begin
Col := 1;
For j := 0 To DbGrid.Columns.Count - 1 Do
Begin
FieldName := DbGrid.Columns[j].FieldName;
ExcelApp.Cells(Row, Col) := ' ' + DataSet.FieldByName(FieldName).AsString + ' ';
Col := Col + 1;
End;
Row := Row + 1;
DataSet.Next;
End; ExcelApp.ActiveWorkBook.SaveAs(Title);
ExcelApp.Quit;
ExcelApp := Unassigned;
End;
这个方法导出excel是没问题的,但是如果填写要保存的文件名已存在的话,excel会提示是否覆盖那个已存在的文件这时候点"是"也没问题,主要是点了"否"活着"取消"前台就会报错如下"类workbook的SaveAs的方法无效 错误eoleException".这是什么原因呢?各位高手能给小弟一个答复吗?万分感谢!!
解决方案 »
- 我写的一个delphi服务程序,其他都可以了,就是调用excel,把数据显示在excel表格后,打印预览时,只显示本地打印机,不显示网络打印机,单独打印预览时excel里面是可以显示网络打印机的。
- 请问盘点机的原理和接口程序开发
- 请问如何创建一个空白的临时文件?
- 关于treeview
- 三层的问题:怎样将DataSet打包成OleVariant???,怎样解包???
- 金蝶在沪建研发基地 3年内扩招1000软件工程师
- 高分求思路(300)
- 高分请教:如何实现可移动的面板?
- 我想让一个image控件通过选择显示一幅图片,可是再打开程序时图片没有了,怎么让它保存住,请看菜鸟的代码.....
- 在sql 中的‘ @@ ’该如何理解? 非常感谢!!
- 请问怎样获得打印机的信息,并用程序控制打印机,实现对打印机的灵活操作,多谢!
- 重量级问题:关于THTTPRIO代理服务器的问题
用"if fileexists(savedialog1.FileName) then"判断文件是否存在--------------------------------------------------------------------------
具体代码就省了,如果不会,网上多的是,搜搜就有了
begin
if dlgmessagebox("文件已存在是否覆盖",mtconfirmation,[mbYES,mbNO],0)=mrYES then
然后如果要覆盖原来的excel应该怎么写这句话还是
ExcelApp.ActiveWorkBook.SaveAs(Title);类似这样还是怎么保存
begin
if MessageBox(Application.Handle, PChar('"'+SD.FileName+'"文件已存在,要替换它吗?'),'*系统提示*',MB_OKCANCEL + MB_DEFBUTTON2 + MB_ICONQUESTION)=mrOk then
begin
if not DeleteFile(SD.FileName) then
begin
ShowMessage('文件导出失败!');
Exit;
end
end else
Exit;
end;
ExcelApp.ActiveWorkBook.SaveAs(SD.FileName);
begin
Exit;
end
else
begin
DeleteFile(SaveDialog1.FileName);
ExcelApp.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
ExcelApp.Quit;
ExcelApp := Unassigned;
end;