关于DELPHI控制EXCEL,急!(100分)

  • 主题发起人 主题发起人 toms_zy
  • 开始时间 开始时间
T

toms_zy

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在DELPHI应用程序中动态地取得EXCEL中的SHEET的名称列表?
 
怎么叫动态,先求总数,再一个一个取就可以了呗。
 
我正是想这样,但具体怎么实现呢,请告知代码好吗?
 
这方面的例子很多,搜索一下吧!
 
我比较急,请在这里告诉我代码好吗?谢谢。
 
procedure TForm1.Button1Click(Sender: TObject);
var
arr : OleVariant;
shs : sheets;
begin
arr := varArrayCreate([0,1],varVariant);
arr[0] := 'Sheet1';
arr[1] := 'Sheet2';
xlApp.Connet;
xlApp.Visible[0] := True;
xlApp.AlertBeforeOverwriting[0] := False;
xlBook.ConnectTo(xlApp.Workbooks.Add(NULL, 0));
xlBook.Sheets.Item[arr].QueryInterface(IID_Sheets,shs);
shs.Select(False,0);
end
 
给我你的E_mail,然后你给我加分!
 
toms_mail@sina.com
 
全部的输出代码都给你,这是我的一个文档管理的用EXECEL输出并打印的一个按钮过程
是从一个QUERY里读出记录并输出到EXECEL显示很简单的,希望你看懂
但是必须安装EXECEL才行,还有注意在USE里申明 comobj好的祝你成功
procedure Tfmsearch.expbtClick(Sender: TObject);
var
range:variant;
i,j:integer;
begin
if dm1.qrinfo.RecordCount=0 then
begin
MessageBox(handle,Pchar('没有记录可输出'),'输出提示',0+48);
exit;
end;
//下面就是正式开始EXECEL输出了
v:=createoleobject('excel.application');//创建EXECEL对象
v.workbooks.add;
v.workbooks[1].worksheets[1].name:='文章清单';
sheet:=V.workbooks[1].worksheets[1];
v.visible:=true;
range:=sheet.range['A1:E1'];
range.merge;
range.borders.linestyle:=0;
range.formular1c1:='文 章 清 单';
range.horizontalalignment:=3;
range.verticalalignment:=2;
range.characters.font.name:='宋体';
range.characters.font.fontstyle:='加粗';
range.characters.font.size:=15;
range.characters.font.colorindex:=2;
range.interior.color:=$00bbbbbb;
//
range:=sheet.range['A2:E2'];
range.merge;//合并
range.borders.linestyle:=0;
range.formular1c1:='输出用户:'+curuser+
' 输出日期:'+formatdatetime('yyyy"年"m"月"d"日"',Date);
range.horizontalalignment:=3;
range.verticalalignment:=2;
range.characters.font.name:='宋体';
range.characters.font.size:=10;
range.characters.font.colorindex:=2;
range.interior.color:=$00Bbbbbb;

//
sheet.cells[3,1]:='编号';
sheet.cells[3,2]:='文章名称';
sheet.cells[3,3]:='录入日期';
sheet.cells[3,4]:='录入用户';
sheet.cells[3,5]:='保密性';



//

for i:=1 to 5 do
begin
sheet.cells[3,i].borders.linestyle:=1;
sheet.cells[3,i].horizontalalignment:=3;
end;
dm1.qrinfo.First;
j:=3;
while not dm1.qrinfo.Eof do//用循环加入记录
begin
inc(j);
sheet.cells[j,1]:=dm1.qrinfotextid.AsString;
sheet.cells[j,2]:=dm1.qrinfotextname.AsString;
sheet.cells[j,3]:=dm1.qrinforecdate.AsDateTime;
sheet.cells[j,4]:=dm1.qrinforecuser.AsString;
sheet.cells[j,5]:=dm1.qrinfotextsec.AsString;

dm1.qrinfo.next;
if dm1.qrinfo.Eof then break;
end;
range:=sheet.range['A4:'+'E'+inttostr(j)];
range.borders.linestyle:=1;
//
sheet.cells.entirecolumn.autofit;
sheet.pagesetup.printtitlerows:='$1:$3';
sheet.pagesetup.rightheader:='execel报表';
sheet.pagesetup.leftheader:='共'+inttostr(dm1.qrinfo.RecordCount)+'篇文章';
sheet.pagesetup.centerfooter:='共&N页'+'/第&P页';
sheet.pagesetup.centerhorizontally:=true;
sheet.pagesetup.orientation:=1;
sheet.pagesetup.draft:=false;
sheet.pagesetup.blackandwhite:=true;
sheet.pagesetup.zoom:=100;
v.displayalerts:=false;
sheet.printpreview;
end;


end.
 
谢谢大家,我已经解决了,大家都有份。皆大欢喜!希望以后多多指教。
 
后退
顶部