uses ComObj {以下是导出的操作,假设是一个已经设置好格式的EXCEL文件,要对其作写入数据,写入后保存成另一个新文件:}procedure TForm1.Button1Click(Sender: TObject); var ExcelApp: Variant; i,j:integer; begin if OpenDialog1.Execute then begin
ExcelApp := CreateOleObject( 'Excel.Application' ); ExcelApp.Visible := false; ExcelApp.DisplayAlerts := False; ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );{打开模块文件} with adoquery do begin close; open; i:=Fields.Count;{字段总数} j:=RecordCount;{多少行记录} for j:=1 to RecordCount-1 do begin for i:=0 to Fields.Count-1 do ExcelApp.Cells[j+1,i].Value:=Fields[i].Value; end;
有点笔误,以下修正一下:uses ComObj {以下是导出的操作,假设是一个已经设置好格式的EXCEL文件,要对其作写入数据,写入后保存成另一个新文件:}procedure TForm1.Button1Click(Sender: TObject); var ExcelApp: Variant; i,j:integer; begin if OpenDialog1.Execute then begin
ExcelApp := CreateOleObject( 'Excel.Application' ); ExcelApp.Visible := false; ExcelApp.DisplayAlerts := False; ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );{打开模块文件} with adoquery do begin close; open; i:=Fields.Count;{字段总数} j:=RecordCount;{多少行记录} for j:=1 to RecordCount-1 do begin for i:=0 to Fields.Count-1 do ExcelApp.Cells[j+1,i].Value:=Fields[i].Value; end;
uses ComObj {以下是导出的操作,假设是一个已经设置好格式的EXCEL文件,要对其作写入数据,写入后保存成另一个新文件:}procedure TForm1.Button1Click(Sender: TObject); var ExcelApp: Variant; i,j:integer; begin if OpenDialog1.Execute then begin
ExcelApp := CreateOleObject( 'Excel.Application' ); ExcelApp.Visible := false; ExcelApp.DisplayAlerts := False; ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );{打开模块文件} with adoquery do begin close; open; {i:=Fields.Count;字段总数} {j:=RecordCount;多少行记录} for j:=1 to RecordCount-1 do begin for i:=0 to Fields.Count-1 do ExcelApp.Cells[j+1,i].Value:=Fields[i].Value; end;
下面我把我的代码贴上,你们看看:
unit tryexcel;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls,ExtCtrls,ComObj;type
TForm2 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
OpenDialog1: TOpenDialog;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form2: TForm2;implementationuses dm1;{$R *.dfm}procedure TForm2.FormActivate(Sender: TObject);
begin
with dm1.DataModule1.ADOQuery1 do
begin
close;
end;end;
procedure TForm2.Button1Click(Sender: TObject);
VAR XL: Variant; Sheet: Variant; SFileName:string; J:integer;
begin
TRY XL := GetActiveOleObject('Excel.Application');EXCEPT XL := CreateOleObject('Excel.Application');
END;
OpenDialog1.Execute;SFileName:=OpenDialog1.FileName;XL.WorkBooks.Open(SFileName);Sheet := XL.WorkBooks[XL.WorkBooks.Count].WorkSheets[1];
WITH dm1.DataModule1.ADOQuery5 do
BEGINclose;
SQL.Clear;
SQL.Add('select * from Table1');
open;
END;
J:=2;
WHILE (sheet.Cells[J,1].text<>'') and (sheet.Cells[J,2].text<>'') DO
BEGIN
dm1.DataModule1.ADOQuery5.FieldByName('学号').Value:=sheet.Cells[J,1].Value;
dm1.DataModule1.ADOQuery5.FieldByName('姓名').Value:=sheet.Cells[J,2].Value;J:=J+1; END;
dm1.DataModule1.ADOQuery5.UpdateBatch(); ShowMessage('成功接收Excel文件信息!');
XL.Quit;end;end.
说白了就是delphi怎么能导入EXCEL里的表,还有的刚是相反的:怎么能把delphi里的gird的数据导进excel里。这功能应该很多系统都要实现的吧?!!
请帮帮我吧!!
{以下是导出的操作,假设是一个已经设置好格式的EXCEL文件,要对其作写入数据,写入后保存成另一个新文件:}procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp: Variant;
i,j:integer;
begin
if OpenDialog1.Execute then begin
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := false;
ExcelApp.DisplayAlerts := False;
ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );{打开模块文件}
with adoquery do begin
close;
open;
i:=Fields.Count;{字段总数}
j:=RecordCount;{多少行记录}
for j:=1 to RecordCount-1 do begin
for i:=0 to Fields.Count-1 do
ExcelApp.Cells[j+1,i].Value:=Fields[i].Value;
end;
end;
ExcelApp.ActiveWorkbook.SaveAs(OpenDialog1.FileName);{另存为一个新文件}
end;
end;
{大概是这样,自已理解一下就行了}
{以下是导出的操作,假设是一个已经设置好格式的EXCEL文件,要对其作写入数据,写入后保存成另一个新文件:}procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp: Variant;
i,j:integer;
begin
if OpenDialog1.Execute then begin
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := false;
ExcelApp.DisplayAlerts := False;
ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );{打开模块文件}
with adoquery do begin
close;
open;
i:=Fields.Count;{字段总数}
j:=RecordCount;{多少行记录}
for j:=1 to RecordCount-1 do begin
for i:=0 to Fields.Count-1 do
ExcelApp.Cells[j+1,i].Value:=Fields[i].Value;
end;
end;
ExcelApp.ActiveWorkbook.SaveAs(OpenDialog1.FileName);{另存为一个新文件}
end;
end;
{大概是这样,自已理解一下就行了}
uses ComObj
{以下是导出的操作,假设是一个已经设置好格式的EXCEL文件,要对其作写入数据,写入后保存成另一个新文件:}procedure TForm1.Button1Click(Sender: TObject);
var
ExcelApp: Variant;
i,j:integer;
begin
if OpenDialog1.Execute then begin
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := false;
ExcelApp.DisplayAlerts := False;
ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' );{打开模块文件}
with adoquery do begin
close;
open;
{i:=Fields.Count;字段总数}
{j:=RecordCount;多少行记录}
for j:=1 to RecordCount-1 do begin
for i:=0 to Fields.Count-1 do
ExcelApp.Cells[j+1,i].Value:=Fields[i].Value;
end;
end;
ExcelApp.ActiveWorkbook.SaveAs(OpenDialog1.FileName);{另存为一个新文件}
end;
end;
{大概是这样,自已理解一下就行了}
varclear(ExcelApp);
procedure TForm1.Button1Click(Sender: TObject);
var
sheet,sheet1,XLApp,workbook : variant;//sheet,sheet1,用来表示工作表的变量,如果你不只两个的话,还可以根据需要设置多几个变量begin
XLApp:=createoleobject('excel.Application');
xlApp.Visible:=true;
//XLApp.displayAlerts:=false;
//XLApp.ScreenUpdating:=false;
xlApp.Workbooks.Add(xlWBATWorksheet);
workbook := XLApp.workbooks[1];sheet:=workbook.worksheets[1];//第一个工作表
sheet.name:='my first sheet';
workbook.worksheets.add;sheet1:=workbook.worksheets[1];//第二个工作表
sheet1.name:='second sheet';
end;
你的XL := CreateOleObject('Excel.Application');后加:XL.Visible:=true;然后加sheet,再给sheet个name,否则怎么能open?
XL的建立代码写完后可以先测试是否成功,再接着写后面的代码。
还有11楼中“xlApp.Workbooks.Add(xlWBATWorksheet); ”的xlWBATWorksheet是什么东西啊?
可否说得详细点?