如何将查询的值导出到EXECEL中
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel 没有安装',mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=true;
ExcelApplication1.Caption:='Excel Not Istalled!';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
query1.Open;
row:=1;
column:=1;
for j:= 0 to Query1.FieldCount-1 do
begin
ExcelWorksheet1.Cells.Item[row,column]:=query1.fields[j].FieldName;
column:=column+1;
end;
row:=2;
While Not(query1.Eof) do
begin
column:=1;
for i:=1 to query1.FieldCount do
begin
ExcelWorksheet1.Cells.Item[row,column]:=query1.fields[i-1].AsString;
column:=column+1;
end;
query1.Next;
row:=row+1;
end;
query1.first;
ExcelWorkbook1.Disconnect;
ExcelWorksheet1.Disconnect;
ExcelApplication1.DisConnect;
end;
如何在DELPHI中操作EXCEL电子表格
??EXCEL电子表格作为办公软件OFFICE中的重要组成部份,是日常办公系统的主要助手,
因此许多日常所需的业务方面的数据通常是通过电子表格存取。有时我们需要从日常工作
中创建的EXCEL中取得数据进行操作、打印、查询,统计等工作。在这里我将介绍如何利
用delphi完成EXCEL电子表格中数据的操作。
一、 新建一项目,从控件栏servers中分别选取控件:excelapplication、
excelworkbook1、excelworksheet,放到主窗体from1中,并加入stringgrid、
三个按钮、五个显示字段内容的EDIT、二个操作显示记录的label、一个用于打
开EXCEL电子表格的控件opendialog等
二、选择excel表'按钮,用于打开EXCEL文件,其代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
opendialog1.InitialDir:=ExtractFileDir(paramstr(0));//文件的打存放初始路径
opendialog1.Execute;
Try
ExcelApplication1.Connect;//EXCEL应用程序
Except
MessageDlg('Excel may not be installed',mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Caption:='Excel Application';
try
excelapplication1.Workbooks.Open(opendialog1.FileName,
null,null,null,null,null,null,null,null,null,null,null,null,0);//打开指定
的EXCEL 文件
except
begin
ExcelApplication1.Disconnect;//出现异常情况时关闭
ExcelApplication1.Quit;showmessage('请选择EXCEL电子表格!');
exit;
end;
end;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
//ExcelWorkbook1与Eexcelapplication1建立连接
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
//Excelworksheet1与Excelworkbook1建立连接
//开始从EXCEL中取数,放到stringgrid1中,取完数后关闭EXCEL
for i:=1 to 1000 do//最大取值1000
for j:=1 to 6 do
begin
if trim(excelworksheet1.cells.item[i+1,1])<>'' then
begin
stringgrid1.rowCount:=i+1;
stringgrid1.Cells[j,i]:=ExcelWorksheet1.Cells.Item[i+1,j];
end
else
begin
label3.caption:=inttostr(i-1);
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
//将第一条数据赋给编辑框
edit2.text:=stringgrid1.Cells[1,1];
edit1.text:=stringgrid1.Cells[2,1];
edit3.text:=stringgrid1.Cells[3,1];
edit4.text:=stringgrid1.Cells[4,1];
edit5.text:=stringgrid1.Cells[5,1];
exit;
end;
end;
end;
??
三、'下一条记录'按钮,完成记录向下移动,代码如下:
procedure TForm1.Button2Click(Sender: TObject);
var x:integer;
begin
x:=stringgrid1.row+1;
if x<> stringgrid1.RowCount then
begin
stringgrid1.row:=stringgrid1.row+1;
label1.caption:=inttostr(x);
edit2.text:=stringgrid1.Cells[1,x];
edit1.text:=stringgrid1.Cells[2,x];
edit3.text:=stringgrid1.Cells[3,x];
edit4.text:=stringgrid1.Cells[4,x];
edit5.text:=stringgrid1.Cells[5,x];
exit;
end
else
showmessage('已到第一条记录!');
end;
四、'上一条记录',完成记录上移,代码如下:
var x:integer;
begin
x:=stringgrid1.row-1;
if x<>0 then
begin
stringgrid1.row:=stringgrid1.row-1;
label1.caption:=inttostr(x);
edit2.text:=stringgrid1.Cells[1,x];
edit1.text:=stringgrid1.Cells[2,x];
edit3.text:=stringgrid1.Cells[3,x];
edit4.text:=stringgrid1.Cells[4,x];
edit5.text:=stringgrid1.Cells[5,x];
exit;
end
else
showmessage('已到最后一条记录!');
end;
五、stringgrid中上下移动时代码:
procedure TForm1.StringGrid1Click(Sender: TObject);
var i:integer;
begin
i:=stringgrid1.Row;
label1.caption:=inttostr(i);
edit1.text:=stringgrid1.Cells[2,i];
edit2.text:=stringgrid1.Cells[1,i];
edit3.text:=stringgrid1.Cells[3,i];
edit4.text:=stringgrid1.Cells[4,i];
edit5.text:=stringgrid1.Cells[5,i];
end;
六、运行程序,点击按钮1打开excel表格。程序将启动EXCEL,并打开了选择的电
子表格,这时请不要关闭EXCEL,当程序从EXCEL取数完毕将自动关闭EXCEL程序,
应用程序取出了EXCEL数据,显示在stringgrid中,并将第一笔数据各字段的值赋
给了左边的对应的edit字段。点击按钮2、按钮3可以查看下一条或上一条记录。
也可以使用光标在stringgrid1上移动。
??同时我们也可以对stringgrid中的记录进行查询、定位。相反,也可以将数据库
中的数据输入到EXCEL中。 总之,只要我们从EXCEL提取出数据,并保存到stringgrid
中,我们就可以进行相应操作,如统计、查询、重新输出,使平进的EXCEL电子表格中
的数据在应用程序中得到利用。
var
Excelapp1:OleVariant;
cell:string;
try
ExcelApp1:= CreateOleObject('Excel.Application');
ExcelApp1.WorkBooks.open(filename1);
cell:=ExcelApp1.ActiveSheet.Cells[i,j];
finally
ExcelApp1.WorkBooks.close;
ExcelApp1.Quit;
end;
用Excelapp1可以读写Excel文件,不过机器上必须装有Excel