作者:乔山办公网日期:
返回目录:excel表格制作
uses ComObj;
procedure TForm1.Button1Click(Sender: TObject);
Var FExcel :OleVariant; //excel应用程序
FWorkBook :OleVariant; //工作表
FWorksheet:OleVariant; //工作薄e799bee5baa6e79fa5e98193e59b9ee7ad94337
FPicture:OleVariant;
TmpStr:String;
begin
FExcel:= CreateoleObject('excel.Application');
FWorkBook:=FExcel.WorkBooks.Add; //新的工作表
FWorksheet:=FWorkBook.Worksheets[1];
FWorksheet.Select;
//插入图象并设置位置与大小
tmpstr:='f:\1.jpg';
FPicture:=FWorksheet.Pictures.Insert(tmpstr);
FPicture.Left:=10;
FPicture.Top:=10;
FPicture.width:=200;
FPicture.height:=200;
FPicture:=null;
FExcel.visible:=true;
end;
将DBGrid查询结果导出到Excel uses comobj; //自定义导出过程
procedure CopyToExcel(Args: array of const);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
I: Integer;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end; XLApp.WorkBooks.Add;
XLApp.SheetsInNewWorkbook := High(Args) + 1; for I := Low(Args) to High(Args) do
begin
XLApp.WorkBooks[1].WorkSheets[I+1].Name := TDBGrid(Args[I].VObject).Name;
Sheet := XLApp.Workbooks[1].WorkSheets[TDBGrid(Args[I].VObject).Name];
if not TDBGrid(Args[I].VObject).DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
TDBGrid(Args[I].VObject).DataSource.DataSet.first;
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count - 1 do
Sheet.Cells[1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Title.Caption;
jCount := 1;
while not TDBGrid(Args[I].VObject).DataSource.DataSet.Eof do
begin
for iCount := 0 to TDBGrid(Args[I].VObject).Columns.Count -1 do
Sheet.Cells[jCount + 1, iCount + 1] :=
TDBGrid(Args[I].VObject).Columns.Items[iCount].Field.AsString;
Inc(jCount);
TDBGrid(Args[I].VObject).DataSource.DataSet.Next;
end;
XlApp.Visible := True;
end;
Screen.Cursor := crDefault;
end;
调用---------------------procedure TForm3.BitBtn1Click(Sender: TObject);
begin
copytoexcel([dbgrid1]);
end; csv的貌似通过写文档的形e799bee5baa6e79fa5e98193e4b893e5b19e334式,如下 name,age,sex张三,22,男李四,22,男...
你可以手动写一个导出函数,以后直接使用它。
//===================================================
//===================ADOQ数据导出到Excel=========
//===================================================
Procedure ADOQOutPutToExcel(MyADOQ:TADOQuery;MyDBG:TDBGrid;SaveFileName:String;Gauge:TGauge);
Var Excel,WorkBook:OleVariant;
i,j,row:integer;
Begin
//检测计算机中是否安装了Excel,是否可以建立对象
Try
Excel:=CreateOleObject('Excel.Application');
Except
Begin
Application.MessageBox('你的计算机中没有安装Excel,无法导出到Excel!','警告',0);
Exit;
end;
end;
//====将数据写入到Excel
WorkBook:=Excel.WorkBooks.Add;//建立工作簿
//==写入标题
Gauge.MaxValue :=MyDBG.Columns.Count-1;
Gauge.Progress :=0;
For i:=0 to MyDBG.Columns.Count-1 DO
Begin
Excel.Cells[1,i+1].value:=MyDBG.Columns.Items[i].Title.Caption;
Gauge.Progress :=i;
End;
Gauge.Progress :=0;
//==写入记录
Row:=2;
MyADOQ.First;
Gauge.MinValue :=0;
Gauge.MaxValue :=MyADOQ.RecordCount;
Gauge.Progress :=0;
For i:=0 to MyADOQ.RecordCount-1 DO
Begin
For j:=0 to MyDBG.Columns.Count-1 DO
Begin
Excel.cells[row,j+1].value:=MyDBG.Fields[j].Value;
end;
Inc(Row);
Gauge.Progress :=Gauge.Progress +1;
MyADOQ.Next;
End;
//==保存到文件
Try
Begin
Excel.ActiveWorkBook.SaveAs(SaveFileName);
Excel:=UnAssigned;
WorkBook.Close;
Application.MessageBox(PChar('模板创建成功!模板已成功保存到:'+#13 +SaveFileName+'.xls'),'操作提示',0);
End;
Except
Begin
Application.MessageBox('模板创建失败,指定文件可能正在使用当中,请关闭e5a48de588b67a686964616f363文件再试一次!','操作提示',0);
Exit;
End;
End;
End;
调用时:
Var ExcelFileName:String;
begin
SaveDialog1.Filter:='数据表|*.xls|';
If SaveDialog1.Execute then
Begin
ExcelFileName:=SaveDialog1.FileName;
ADOQOutPutToExcel(ADOQ_yfd,DBG_yfd,ExcelFileName,Gauge);
End;
将数据库表导出到 excel 有多种方法,大多是循环读取并输出数据库的字段名,作为 excel 表格的列标题,再循环读取各字段,输入各值。
uExportXls.pas 封装了一个导出类,使用也很简单:
1、在工程的单元636f70797a64364文件里 uses uExportXls;
2、在需要使用转换的地方,调用代码示例如下:
//功能:将数据集的数据导入Excel;
//用法1:
With ExportXls.Create(TDataSet(ADOQuery1)) do
Try
Save2File(SaveDialog1.FileName, True);
finally
Free;
end;
//用法2:
procedure TForm1.Button4Click(Sender: TObject);
var ex:ExportXls;
begin
ex:=ExportXls.Create(ADOQ);
if SaveDialog1.Execute then ex.Save2File(SaveDialog1.FileName,TRUE);
end;