转电子表格的问题(50分)

  • 主题发起人 主题发起人 shandong1
  • 开始时间 开始时间
S

shandong1

Unregistered / Unconfirmed
GUEST, unregistred user!
我找了个转电子表格的例子,不过它是 ADOTable 转电子表格,哪位老大能给我改成 ADOQuery 转电子表格啊?谢谢了
 
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Excel2000, OleServer, Grids, DBGrids, DB, ADODB;

type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
Button1: TButton;
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Procedure WriteData;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var empty:OleVariant;
begin
try
Excelapplication1.Connect;
except
MessageDlg('Excel可能没有安装', mtError, [mbOk], 0);
Abort;
end;

ExcelApplication1.Visible[0] := True;
try
empty := EmptyParam;
//添加一个新工作簿
ExcelApplication1.Workbooks.Add(empty,0);
//组件和工作簿连接
ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.Item[
ExcelApplication1.Workbooks.Count]);
//激活工作簿
ExcelWorkBook1.Activate ;
//组件和工作表连接
ExcelWorksheet1.ConnectTo((ExcelWorkbook1.Worksheets[1] as _WorkSheet));
//调用自定义函数将数据库中的数据保存到工作表中
WriteData;
except
ExcelWorkBook1.Close(xlDoNotSaveChanges);
ExcelApplication1.Disconnect;
end;
end;


//自定义函数用于从数据库中逐行的读取数据
//并写入当前工作表中
procedure TForm1.WriteData;
var Col:Char;
Row,j:integer;
R:String;
begin
with ADOTable1 do
begin
//从第一条记录开始
first;
Col := 'A'; //第一列为A
Row := 1; //从第一行开始
while not eof do
begin
//从数据库中每一行中逐个读取各个字段数值
for j :=0 to Fields.Count-1 do
begin
//指定范围
R := String(Col) + IntToStr(Row);
//将数据库中的数据写入Excel中
ExcelWorksheet1.Range[R,R].Value2 := Fields.Fields[j].Value ;
//得到下一列,依次为A、B、C……
Col := Chr(Ord(Col)+1);
end;
Inc(Row); //下一行
Col := 'A'; //重新指向第1列
Next; //下一条记录
end;
end;
end;
end.
 
有什么不同吗,将adotable换成adoquery马上就可以用啊
 
http://www5.skycn.com/soft/29751.html
这项技术可较好地解决你的问题
QQ:292044357
 
我试过了,将adotable换成adoquery不行的,
 
不好意思,刚才操作失误,重新做了一次,将adotable换成adoquery还真的行,哈哈,我是个菜鸟,不好意思,送分了
 
后退
顶部