前段时间由于程序中有类似的功能,我在网上找到了不少相关的资料,结合我自己的使用情况,总结出这两种比较简单的方法,有关代码借签部分网友的作品,在此表示感谢。 (一)利用Server面板上的三个Excel相关的组件excelApplication,Excelworksheet,excelworkbook,使用这些控件与Excel程序建立联系,同时此面板上还提供了操作Office的控件,具体使用方法,还请对此熟悉的高手提供一些资料. 具体操作代码如下: procedure TJspdcxform.BitBtn1Click(Sender: TObject);//导出按纽 var i,row:integer; begin if SaveDialog1.Execute then//此处还用了一个保存对话框 begin Screen.Cursor:=crHourGlass; //设置鼠标形状为沙漏状 ExcelApplication1.Connect;//和excel连接如果没有Excel程序可能要出错 ExcelApplication1.Workbooks.Add(Null,0);//为excel添加工作簿 ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]); ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet); if not Query1.Active then begin QUERY1.Open; end; for i:=0 to QUERY1.Fields.Count-1 do ExcelWorkSheet1.Cells.Item[1,i+1]:=dbgrid1.Columns.Items[i].Title.Caption;//把DBGRID的各字段名写入Excel第一行 row:=2; //或用QUERY1.Fields[i].FieldName代替DBGRID1.columns.Items[i].Title.Caption那句 while not QUERY1.Eof do begin for i:=0 to QUERY1.Fields.Count-1 do begin ExcelWorkSheet1.Cells.Item[row,i+1]:=QUERY1.Fields[i].AsString; end;//把查询结果写入到电子表格中 row:=row+1; QUERY1.Next; end; ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName); ExcelWorkBook1.Close(false); ExcelApplication1.Disconnect; ExcelApplication1.Quit; Screen.Cursor:=crDefault; Application.MessageBox('成功保存文件!','提示',0); end; end;
(二)利用Ole创建Excel对象,然后再进行导出 procedure Tform1.SpeedButton5Click(sender:Tobject); var Excel,Wrkbook,WrkSheet:olevariant; I,row:integer; Begin
Try Excel:=CreateOleObjcet(‘Excel.Application’); Except If Application.MessageBox(‘你的机器没安装Excel,是否继续志出?’,‘注意’,Mb_OkCancel)=Id_no then Exit; End;
If SaveDialog1.Execute then Begin WrkBook:=Excel.WorkBooks.Add;//建立工作簿 Row:=1; SheetCout:=1; While not Query1.Eof do Begin If Row=1 then for I:=0 to QUERY1.Fields.Count-1 do Excel.workbook.worksheets[SheetCount].Cell[Row,I+1].value:= dbgrid1.Columns.Items[i].Title.Caption;//把标题写入EXCEL Inc(Row); For I:=0 to QUERY1.Fields.Count-1 do Excel.workbook.worksheets[SheetCount].Cell[Row,I+1].value:=query1.fields[i].asstring; If Row>50000 then Begin SheetCount:=SheetCount+1; Row:=1; End; Query1.Next; End; Excel.Activeworkbook.SaveAs(saveDialog1.FileName); WrkBook.Close; Excel.quit; Excel:=Unassigned; ShowMessage(‘系统已经导出,请到’+SaveDialog1.FileName+’里查看’); End; 由于对Excel的控件工作机理不是太明白,所以无法做出具体详细的注释,请高手看完之后能对这些代码做些讲评,也让我多学些。
----------------------------------------------
无论你是狮子还是羚羊,为了生存,你别无选择,你必须跑!