procedure output_excel_file(file_path:string;report_type:Toutput_report_type;report_CDS:TADOQUERY);
var
Ecloum,Erow,row1,row2,i:integer;
Excel_application:variant;
strFormat:OleVariant;
begin
try
Excel_application:=createoleobject('Excel.application');
Excel_application.workbooks.add;
except
application.MessageBox('excel沒有安裝請檢查','worng',mb_iconerror+mb_ok);
Excel_application.quit;
Excel_application:=unassigned;
exit;
end;
............................................
................................................
Excel_application.workbooks[1].SaveAs(file_path);
end;
工具:Delphi2010
環境:windows7 office2010 plus
運行到:
Excel_application.workbooks[1].SaveAs(file_path);
時;
報錯
運行時錯誤"91"
未設定物件變數或With block變數
請大家幫看看該如何決絕。謝謝!
uj5u.com熱心網友回復:
關注。。。。。。。uj5u.com熱心網友回復:
procedure TSearchForm.Ygnsr_DcbtnClick(Sender: TObject);var
Excel: Variant;
WorkBook: OleVariant;
SavePath: OleVariant;
i,c: integer;
StatePanel: TMiniTitlePanel;
begin
if Ygnsr_Grid.RowCount=0 then
begin
MiniToolTip1.ShowBalloonTip(Ygnsr_Grid.Handle,2,'提示','無可匯出的資料!');
Exit;
end;
DocSaveDialog.Title:='保存在';
DocSaveDialog.DefaultExt:='xlsx';
DocSaveDialog.Filter:='EXCEL檔案|*xlsx';
if DocSaveDialog.Execute then
SavePath:=DocSaveDialog.FileName
else
Exit;
StatePanel:=TMiniTitlePanel.Create(nil);
StatePanel.Parent:=Ygnsr_Grid;
StatePanel.Width:=185;
StatePanel.Height:=32;
StatePanel.Left:=(StatePanel.Parent.Width-StatePanel.Width) div 2;
StatePanel.Top:=(StatePanel.Parent.Height-StatePanel.Height) div 2;
StatePanel.ShowTitle:=False;
StatePanel.Caption:='進度:0/'+IntToStr(Ygnsr_Grid.RowCount);
StatePanel.Font.Color:=clBlue;
StatePanel.Color:=clSkyBlue;
StatePanel.Show;
StatePanel.Repaint;
Self.Repaint;
try
Excel:=CreateOleObject('Excel.Application');
try
Excel.Visible:=False;
WorkBook:=Excel.WorkBooks.Add;
try
Excel.WorkSheets[1].Activate;
Excel.ActiveSheet.Columns[1].HorizontalAlignment:=2; //左對齊
Excel.ActiveSheet.Columns[1].ColumnWidth:=12;
Excel.Cells[1,1].Value:='員工姓名';
Excel.ActiveSheet.Columns[2].HorizontalAlignment:=4; //右對齊 3為居中
Excel.ActiveSheet.Columns[2].ColumnWidth:=12;
Excel.Cells[1,2].Value:='1月工資';
Excel.ActiveSheet.Columns[3].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[3].ColumnWidth:=12;
Excel.Cells[1,3].Value:='2月工資';
Excel.ActiveSheet.Columns[4].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[4].ColumnWidth:=12;
Excel.Cells[1,4].Value:='3月工資';
Excel.ActiveSheet.Columns[5].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[5].ColumnWidth:=12;
Excel.Cells[1,5].Value:='4月工資';
Excel.ActiveSheet.Columns[6].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[6].ColumnWidth:=12;
Excel.Cells[1,6].Value:='5月工資';
Excel.ActiveSheet.Columns[7].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[7].ColumnWidth:=12;
Excel.Cells[1,7].Value:='6月工資';
Excel.ActiveSheet.Columns[8].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[8].ColumnWidth:=12;
Excel.Cells[1,8].Value:='7月工資';
Excel.ActiveSheet.Columns[9].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[9].ColumnWidth:=12;
Excel.Cells[1,9].Value:='8月工資';
Excel.ActiveSheet.Columns[10].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[10].ColumnWidth:=12;
Excel.Cells[1,10].Value:='9月工資';
Excel.ActiveSheet.Columns[11].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[11].ColumnWidth:=12;
Excel.Cells[1,11].Value:='10月工資';
Excel.ActiveSheet.Columns[12].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[12].ColumnWidth:=12;
Excel.Cells[1,12].Value:='11月工資';
Excel.ActiveSheet.Columns[13].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[13].ColumnWidth:=12;
Excel.Cells[1,13].Value:='12月工資';
Excel.ActiveSheet.Columns[14].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[14].ColumnWidth:=12;
Excel.Cells[1,14].Value:='年終獎';
Excel.ActiveSheet.Columns[15].HorizontalAlignment:=4;
Excel.ActiveSheet.Columns[15].ColumnWidth:=12;
Excel.Cells[1,15].Value:='總計';
StatePanel.Caption:='任務處理中...0/'+IntToStr(Ygnsr_Grid.RowCount);
StatePanel.Update;
for i:=1 to Ygnsr_Grid.RowCount do
for c:=1 to Ygnsr_Grid.Titles.Count do
begin
Excel.Cells[i+1,c].Value:=Ygnsr_Grid.Cells[c-1,i-1];
StatePanel.Caption:='任務處理中...'+IntToStr(i)+'/'+IntToStr(Ygnsr_Grid.RowCount);
StatePanel.Update;
end;
StatePanel.Caption:='正在保存...';
StatePanel.Repaint;
WorkBook.SaveAs(SavePath);
finally
WorkBook.Close;
Excel.Quit;
Excel:=Unassigned; //退出時不保留行程。
end;
except
Abort;
MessageBox(Handle,'系統未安裝EXCEL!','提示',MB_OK+MB_ICONWARNING);
end;
finally
StatePanel.Free;
end;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/34274.html
標籤:VCL組件開發及應用
上一篇:grid控制元件
下一篇:關于函式回傳值的問題
