当前位置:首页>开发>正文

delphi如何导出EXCEL delphi导出数据至Excel的几种方法及比较

2023-04-18 06:46:08 互联网 未知 开发

 delphi如何导出EXCEL delphi导出数据至Excel的几种方法及比较

delphi如何导出EXCEL


首先在Uses处加上ComObj

procedure TForm1.Button1Click(Sender: TObject)
var h,k:integer
Excelid: OleVariant
s: string
begin
try
Excelid := CreateOLEObject(Excel.Application)
except
Application.MessageBox(Excel没有安装!, 提示信息, MB_OK MB_ICONASTERISK MB_DEFBUTTON1 MB_APPLMODAL)
Exit
end
try
ADOQuery1.Close
ADOQuery1.SQL.Clear
ADOQuery1.SQL.Add(select * from jj_department)
ADOQuery1.Open
k:=ADOQuery1.RecordCount
Excelid.Visible := True
Excelid.WorkBooks.Add
Excelid.worksheets[1].range[A1:c1].Merge(True)
Excelid.WorkSheets[1].Cells[1,1].Value :=部门编码表
Excelid.worksheets[1].Range[a1:a1].HorizontalAlignment := $FFFFEFF4
Excelid.worksheets[1].Range[a1:a1].VerticalAlignment := $FFFFEFF4
Excelid.WorkSheets[1].Cells[2,1].Value := 组别编号
Excelid.WorkSheets[1].Cells[2,2].Value := 公司编号
Excelid.WorkSheets[1].Cells[2,3].Value := 组别名称
Excelid.worksheets[1].Range[A1:c1].Font.Name := 宋体
Excelid.worksheets[1].Range[A1:c1].Font.Size := 9
Excelid.worksheets[1].range[A1:c2].font.bold:=true
Excelid.worksheets[1].Range[A2:c2].Font.Size := 9
Excelid.worksheets[1].Range[A2:c2].HorizontalAlignment := $FFFFEFF4
Excelid.worksheets[1].Range[A2:c2].VerticalAlignment := $FFFFEFF4
h:=3
ADOQuery1.First
while not ADOQuery1.Eof do
begin
Excelid.WorkSheets[1].Cells[h,1].Value := Adoquery1.FieldByName(Fdept_id).AsString
Excelid.WorkSheets[1].Cells[h,2].Value := Adoquery1.FieldByName(Ffdept_id).AsString
Excelid.WorkSheets[1].Cells[h,3].Value := Adoquery1.FieldByName(Fdept_name).AsString
Inc(h)
Adoquery1.Next
end
s := A2:f IntToStr(k 2)
Excelid.worksheets[1].Range[s].Font.Name := 宋体
Excelid.worksheets[1].Range[s].Font.size := 9
Excelid.worksheets[1].Range[s].Borders.LineStyle := 1
Excelid.Quit
except
Application.MessageBox(导入数据出错!请检查文件的格式是否正确!, 提示信息, MB_OK MB_ICONASTERISK MB_DEFBUTTON1 MB_APPLMODAL)
end
MessageBox(GetActiveWindow(), EXCEL数据导出成功!, 提示信息, MB_OK MB_ICONWARNING)

end

delphi导出数据至Excel的几种方法及比较

将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的貌似通过写文档的形式,如下 name,age,sex张三,22,男李四,22,男...

delphi 怎么实现数据导出到EXCEL

Eclapp:= createoleobject(Excel.Application)
Application.ProcessMessages
try
Eclapp.workbooks.add
eclapp.cells[1, 1]:= Caption
n:= 2
for i:= 3 to 你数据集的行数 - 1 do
begin
for j:= 1 to 你数据集的列数 - 1 do
begin
eclapp.cells[n, j]:= 根据行列得到你数据集中的值 Application.ProcessMessages
end
inc(n)
end
eclapp.Activeworkbook.saveas(FileName)
eclapp.visible:= true
except
on E: Exception do
begin
raise Exception.Create(E.Message)
end
end

delphi转excel

我用Delphi做过Excel类似的报表,当时也发现直接控制生成数据透视表非常困难。后来问题解决了,方法如下,可以供你参考:

1、先建立好Excel模板,模板中sheet2已做好了数据透视表,且各栏位的属性等都已设置OK,只是数据是空的;保存在程序可以访问到的地方;

2、模板的sheet1中的数据至少先放上两行。两行是指数据透视表引用了这两行,这两行当然可以空数据;

3、Delphi控制Excel数据填写时,先填写第一行数据,后续数据是先在第一行与第二行之间插入空行,再填写;这样sheet2的数据透视表在刷新时会自动跟着变的,所以就不用关心数据透视表的问题了。(最后可能需要删除最后一个空行)

打开模板的语句是:
workbook:=eclapp.workbooks.add(报表模板.xls)

保存的时候,用自己生成的文件名,或用户输入的文件名,即可。
==============================
数据透视表刷新倒是个问题,不像一般的图表会自动刷新。

数据透视表刷新的宏语句是(sheet2为当前工作表):
ActiveSheet.PivotTables("数据透视表1").PivotCache.Refresh

你可以试试,把这句改改放到Delphi中调用,使之在保存文件之前刷新。这我没试过,你得研究一下了。

Good Luck!

delphi DBGrid1导出excel

那你这一段改一下
for i:=0 to DBGrid1.Columns.Count-1 do begin eclApp.Cells(1,i 1):=DBGrid1.Columns[i].FieldName end
改成
eclApp.Cells(1,i):=客户编码
eclApp.Cells(1,2):=客户姓名
依此类推即可

最新文章