var
ExcelApp: Variant;
begin
try
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := false;
ExcelApp.Caption := 'WEB调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
ExcelApp.Cells[1,1].Value := '第一行第一列';
ExcelApp.Cells[1,2].Value := '第一行第二列';
ExcelApp.SaveAs( 'C:\data\example.cvs' );
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
except
end;
程序执行时,提示Method SaveAs not supported by automation object.这个该怎么解决?还有,我程序运行的服务器上是否必须先安装EXCEL?
ExcelApp: Variant;
begin
try
ExcelApp := CreateOleObject( 'Excel.Application' );
ExcelApp.Visible := false;
ExcelApp.Caption := 'WEB调用 Microsoft Excel';
ExcelApp.WorkBooks.Add;
ExcelApp.WorkSheets[1].Activate;
ExcelApp.Cells[1,1].Value := '第一行第一列';
ExcelApp.Cells[1,2].Value := '第一行第二列';
ExcelApp.SaveAs( 'C:\data\example.cvs' );
ExcelApp.WorkBooks.Close;
ExcelApp.Quit;
except
end;
程序执行时,提示Method SaveAs not supported by automation object.这个该怎么解决?还有,我程序运行的服务器上是否必须先安装EXCEL?
解决方案 »
- DELPHI 7用IMAGE画出来的图片导入coreldraw变形了,是为啥
- 问一个DBGRIDeh排序的问题
- SendMessage 能否发信息到一个调用的程序哪里?
- 一个老程序员的困惑?
- 急!!!如何打印image里的图片?
- InfoPower 4000 的使用
- 请大家帮帮忙忙,看看这到底是那错了!
- 帮帮我,怎样取得一个小型局域网的服务器?
- 如何用delphi来实现对cpu和内存利用率的读取。
- 一个三层结构的技术问题,高手请进!!!急用!!!!!
- 有没有人给讲一下Delphi里的GUID是什么东东?用到什么地方?
- delphi7中去除了serversocket和clientsocket组件,怎么找回来?
代码如下,很简单,基本上是一个示范。
var i,j : integer;begin
adoquery1.Open; //连接数据库,这里只演示SQL我先写进去了
ea1 := texcelapplication.Create(self); //excelapplication1
ew1 := texcelworkbook.Create(self); //excelworkbook1
ews1 := texcelworksheet.Create(self); //excelworksheet1
ea1.Connect;
ea1.Workbooks.Add(null,0);
ew1.ConnectTo(ea1.Workbooks[1]);
ews1.ConnectTo(ew1.Sheets[1]as _worksheet);
if adoquery1.RecordCount > 0 then begin
i:= 0;
while not adoquery1.Eof
do begin
for j:=0 to adoquery1.FieldCount-1
do
begin
ews1.Cells.Item[i+1,j+1]:= adoquery1.Fields[j].AsString;
end;
i:= i+1;
adoquery1.Next;
end;
end;
ew1.SaveCopyAs('e:\temp.xls');//保存EXCEL这里你也可以自己写更多
//最后注意这里要把excelapplication,excelworkbook,excelworksheet
//关闭掉,怎么关?这个自己摸摸吧。不写的话要看到EXCEL表最好把机器注销一下
//这里只是一个示例你还可以在里面加入写表头的代码等其他功能。 end;
请问楼主ea1 ew1 ews1,三个变量要定义吗;
variant??
---------------------------------------------
为什么我的这里出错?
ea1 := texcelapplication.Create(self); //excelapplication1
ew1 := texcelworkbook.Create(self); //excelworkbook1
ews1 := texcelworksheet.Create(self); //excelworksheet1
谢谢
----------------------------------------------
TO yetti(yetti)
你在FORM上把3个控件放上去,不需要定义的。
这是一位高人的DBGRID导出
你可以试用一下:
http://www.starfarmsoft.com/exchange/ExcelCtrl.dcu函数定义为:
procedure SaveToExcel(ReptTitle, ReptHead: string; DataSet: TADOQuery; Grid: TDBGrid; FileName: string);需要说明的是:目前功能还比较简单,只对付一些常用的规则;DataSet是DBGrid的数据源(DBGrid.DataSource.DataSet=DataSet),目前是多此一举,只是为以后方便!调用例如:
SaveToExcel('动力厂报表','excel表格',ADOQuery1,DBGrid1,'c:\动力厂报表.xls');在tools菜单----->Environment options--->library---->library path 加入'*.dcu'文件所在路径
再在你的程序体里USES一下ExcelCtrl!
对excel的读写:
unit UMain; interface uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, Grids, DBGrids,Excel97,Comctrls,OleCtnrs,ComObj; type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
DataSource1: TDataSource;
Table1: TTable;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
XlsApp,XlsSheet,XlsWBk : Variant;
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject);
var
I,J : integer;
begin
if VarIsEmpty(XlsApp) then
XlsApp := CreateOleObject('Excel.Application'); XLsApp.Workbooks.Add;
XlsSheet := XLsApp.Worksheets['Sheet1']; for I := 0 to Table1.Fields.Count - 1 do
begin
XlsSheet.Cells[3,I + 1] := dbgrid1.Columns[I].Title.Caption;
end; Table1.first;
for J := 0 to Table1.RecordCount - 1 do
begin
for I := 0 to Table1.Fields.Count - 1 do
begin
XlsSheet.Cells[J + 4,I + 1] := Table1.Fields[I].AsString;
end;
Table1.Next;
end; XlsApp.Visible := true;
end; procedure TForm1.Button2Click(Sender: TObject);
var
I,J : integer;
TxtFile : TextFile;
TmpString : String;
begin
try
if VarIsEmpty(XlsApp) then
XlsApp := CreateOleObject('Excel.Application');
XlsSheet := XlsApp.workbooks.open('c:\my documents\book3.xls'); AssignFile(TxtFile,'C:\My Documents\Test.txt');
Rewrite(TxtFile);
try
for I := 3 to 21 do
begin
TmpString := '';
for J := 1 to 5 do
begin
TmpString := TmpString + XlsSheet.ActiveSheet.Cells[I,J].Text + '|';
end;
Writeln(TxtFile,Tmpstring);
end;
finally
CloseFile(TxtFile);
end;
XlsApp.Visible := true;
except
XlsSheet.close;
XlsApp.Application.quit;
XlsApp := Unassigned;
XlsSheet := Unassigned;
end;
end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not VarIsEmpty(XlsApp) then
begin
XlsApp.DisplayAlerts := True; // 7Discard unsaved files....
try
XlsApp.Application.Quit;
except
end;
end;
end; end.