各位大虾:这是我参照某参考书更改的,可是实现不了,COMPILE时,出现如下错误:[Error] Unit1.pas(45): Undeclared identifier: 'createoleobject'procedure Tform1.EXCEL1Click(Sender: TObject);
var
ExcelApp,MyWorkBook:Variant;
i:integer;
begin
ExcelApp:=createoleobject('Excel.Application');
MyWorkBook:=CreateOleObject('Excel.Sheet');
MyWorkBook:=ExcelApp.workbooks.add;
query1.First;
i:=0;
while not query1.Eof do
begin
i:=i+1;
MyWorkBook.WorkSheets[1].Cells[i,1].Value:=query1.FieldByName('deptno').asstring;
MyWorkBook.WorkSheets[1].Cells[i,2].Value:=query1.MainTable.FieldByName('dept_name').asstring;
query1.Next;
end;
end;
为什么?是不是要添加什么控件呀?望详复,谢谢啦!
var
ExcelApp,MyWorkBook:Variant;
i:integer;
begin
ExcelApp:=createoleobject('Excel.Application');
MyWorkBook:=CreateOleObject('Excel.Sheet');
MyWorkBook:=ExcelApp.workbooks.add;
query1.First;
i:=0;
while not query1.Eof do
begin
i:=i+1;
MyWorkBook.WorkSheets[1].Cells[i,1].Value:=query1.FieldByName('deptno').asstring;
MyWorkBook.WorkSheets[1].Cells[i,2].Value:=query1.MainTable.FieldByName('dept_name').asstring;
query1.Next;
end;
end;
为什么?是不是要添加什么控件呀?望详复,谢谢啦!
DesignTime加入一TADOQuery (用來連.mdb)
連Excel之ADOQuery Runtime create...var form1:TForm1; ExcelConnectStr : string; //用來連Excel檔之字串implementation{$R *.DFM}//輸入Excel之檔, Create一ADOQueryfunction OpenXlsAsADO(owner:TComponent;fname:string;sheetname:string='sheet1'):TAdoQUery;var s,sht:string;begin Result:=TAdoQuery.Create(owner); try s:=AnsiReplaceStr(ExcelConnectstr, 'xxx.xls', fname); Result.ConnectionString:=s; sht:='['+SheetName+'$'+']'; Result.sql.text:='select * from '+sht; Result.open; except result.Free; end;end;procedure TForm1.Button1Click(Sender: TObject);var sql:string; ADOQ:TADOQuery;begin if OpenDia1.execute then begin ADOQ:=OpenXlsAsADO(self,OpenDia1.filename); //open .xls檔成ado// adoquery1連向 .mdb AdoQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+ 'Data Source=D:\bbb\dream.mdb;Persist Security Info=False'; ADOQ.first; while not ADOQ.eof do begin sql:='Insert INTO file(DirId,FileId,File,KeyWord,Script,Fav) Values'; sql:=sql+'('''+adoq.Fields[0].asstring; sql:=sql+''','''+adoq.Fields[0].asstring; sql:=sql+''','''+adoq.Fields[0].asstring; sql:=sql+''','''+adoq.Fields[0].asstring; sql:=sql+''','''+adoq.Fields[0].asstring; sql:=sql+''','''+adoq.Fields[0].asstring+''')'; AdoQuery1.SQL.Text:=sql; AdoQuery1.ExecSQL; AdoQ.Next; end; adoq.free; end;end;initialization //連Excel之樣板字串 ExcelConnectstr:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+ 'Data Source=xxx.xls;'+ 'Mode=Share Deny None;Extended Properties=Excel 8.0;'+ 'Persist Security Info=False;Jet OLEDB:System database="";'+ 'Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'+ 'Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;'+ 'Jet OLEDB:Global Partial Bulk Ops=2;'+ 'Jet OLEDB:Global Bulk Transactions=1;'+ 'Jet OLEDB:New Database Password="";'+ 'Jet OLEDB:Create System Database=False;'+ 'Jet OLEDB:Encrypt Database=False;'+ 'Jet OLEDB:Don''t Copy Locale on Compact=False;'+ 'Jet OLEDB:Compact Without Replica Repair=False;'+ 'Jet OLEDB:SFP=False';end.
再问一下,在我这个程序中,要让结果以EXCEL显示出来,还要什么控件呢?另:KKK123大虾,你写的东东,菜鸟我实在是看不懂,多谢了。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, Db, DBTables, Excel97, OleServer;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Edit1: TEdit;
DataSource1: TDataSource;
Query1: TQuery;
DBGrid1: TDBGrid;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
ExcelApplication1: TExcelApplication;
Label1: TLabel;
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button5Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text :=Edit1.Text ;
Query1.Open;
end;procedure TForm1.Button1Click(Sender: TObject);
var
i,row,column:integer;
begin
Try
ExcelApplication1.Connect;
Except
MessageDlg('Excel may not be installed',
mtError, [mbOk], 0);
Abort;
End;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Caption:='Excel Application';
ExcelApplication1.Workbooks.Add(Null,0);
ExcelWorkbook1.ConnectTo
(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo
(ExcelWorkbook1.Worksheets[1] as _Worksheet);
Query1.Open;
row:=1;
column:=1;
for i:=0 to query1.FieldCount -1 do //列标题
begin
ExcelWorksheet1.Cells.Item[row,column]:=dbgrid1.Fields[i].DisplayLabel ;
column:=column+1;
end;row:=row+1;
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;end;procedure TForm1.Button2Click(Sender: TObject);
begin
ExcelWorksheet1.PrintPreview;
end;procedure TForm1.Button3Click(Sender: TObject);
begin
ExcelWorksheet1.PrintOut;
end;procedure TForm1.Button4Click(Sender: TObject);
begin
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;end.
谢谢你!
不过,你用的是EXCEL97,用EXCEL2000代替可以吗?