如何把dbgrid中的内容savetofile至一个文件中,此文件可在excel 中打开并编辑(200分)

  • 主题发起人 主题发起人 tree0905test
  • 开始时间 开始时间
T

tree0905test

Unregistered / Unconfirmed
GUEST, unregistred user!
如何把dbgrid中的内容savetofile至一个文件中,此文件可在excel 中打开并编辑,或把一个
adoquery 中的内容savetofile 至一个文件中,此文件可在excel中打开并编辑 [:)]
 
1. dbgrid的所有内容都来自其datasource,所以对dbgrid内容的操作就是对其datasource.dataset
的操作。
2. 既然是对dataset的操作,就可以先建立一个文件,扩展名就是xxx.xls;然后将dataset
中的内容一条一条写到文件中,注意各字段取值之间用tab键各开。这样文件就可以直接
在excel中编辑.

 
用ADO连接EXCEL,把数据集的内容存入EXCEL表。
 
你可以用OLE控制Excel的方法将DBGrid的内容写入一个Excel文件。
 
使用axxlsrw的TXLSWrite空间可以解决你的问题。
本来ehlib也有保存数据到Excel的功能,但没有解决多层表头的问题
如果你的表格不是多层的,就可以使用ehlib,如果有就用TXLSWrite吧,
我就是使用它完成我的DbGridEh中的数据转Excel功能的。
 
你只要把dbgrid对应的dataset的数据保存到Excel中,然后保存成*.xls文件不就可以搞
定了吗?!
var
ADOQuery1:TADOQuery;
SaveDialog1: TSaveDialog;
ExcelApplication1: TExcelApplication;
ExcelWorkbook1: TExcelWorkbook;
ExcelWorksheet1: TExcelWorksheet;

procedure TForm1.Button1Click(Sender: TObject);
var
i,row:integer;
begin
if adoquery1.Active then
if SaveDialog1.Execute then
begin
Screen.Cursor:=crHourGlass;
ExcelApplication1.Connect;
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);
if not adoQuery1.Active then
begin
adoQuery1.Open;
end;
for i:=0 to adoQuery1.Fields.Count-1 do
ExcelWOrkSheet1.Cells.Item[1,i+1]:=adoQuery1.Fields.FieldName;
row:=2;
while not adoQuery1.Eof do
begin
for i:=0 to adoQuery1.Fields.Count-1 do
begin
ExcelWOrkSheet1.Cells.Item[row,i+1]:=adoQuery1.Fields.AsString;
end;
row:=row+1;
adoQuery1.Next;
end;
ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName);
excelworksheet1.Cells.Clear;
ExcelWOrkBook1.Close(false);
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
Screen.Cursor:=crDefault;
Application.MessageBox('Export successfully!','Information',0);
end;
end;
 
导成CSV格式,EXCEL通用!!!
如:
86431,jk99,8888,141@.net,000009901,2000-09-05 16:00:00.000
86046,jk99,8888,111,test84est,2000-09-03 02:24:00.000

zchu

 
给你一段例子,在我的程序中运行通过,以共借鉴:
procedure Tclqueryform.BitBtn7Click(Sender: TObject);
var
i,j,b,c:integer;
begin
clgldata.cpkcQuery1.Open;
clgldata.cpkcquery1.First;
b:=clgldata.cpkcquery1.recordcount;
c:=clgldata.cpkcquery1.fieldcount;
app:=createoleobject('excel.application');
Screen.Cursor:=crHourGlass;
app.Visible:=False;
app.WorkBooks.Add;
sheet:=app.WorkBooks[1].WorkSheets[1];
app.cells[1,3]:='配件清单';
app.range['c1'].Characters.font.Size:=15;
app.range['c1'].Characters.font.name:='黑体';
app.range['A2:k410'].Borders.LineStyle:=1; //加边框
app.range['A2:k410'].Characters.font.Size:=9;
app.range['A2:k410'].Columns[1].ColumnWidth:=16; // 设置列宽
for j:=0 to c-1 do
app.Cells.Item[2,j+1]:=clgldata.cpkcQuery1.Fields[j].displaylabel; //标题
for i:=1 to b do begin
for j:=0 to c-1 do begin
app.Cells.Item[i+2,j+1]:=clgldata.cpkcquery1.fields[j].asstring;;
end;
clgldata.cpkcquery1.next;
end;
app.Visible:=true;
Screen.Cursor:=crDefault;
end;
 
用DevExpress里面的DbGrid
它带有这个方法
SaveToExcel
SaveToHtml
......
 
看看http://www.delphibbs.com/delphibbs/dispq.asp?LID=630160
也许有用。
 
后退
顶部