调用excel做报表,如何插入多各sheet并且让每个sheet上的内容和模板中的内容一样?(100分)

  • 主题发起人 主题发起人 wang3003
  • 开始时间 开始时间
W

wang3003

Unregistered / Unconfirmed
GUEST, unregistred user!
因为我要生成多份报表,每份报表都想先使用模板生成,然后再在其中填数据.请问如何做?
 
try
v := GetActiveOleObject('Excel.Application');
v.Quit;
except
end;
v := CreateOLEObject('Excel.Application');
v.WorkBooks.Open(strXlsFileName);

//复制相同格式的数据表 i - 1 张
sh := v.WorkBooks[1].WorkSheets[1];
for j := 1 to cnt - 1 do
sh.Copy(Sh);
v.WorkBooks[1].Save;
 
to lujuhe:
本人第一次用excel来做报表,而且用的是bcb6,不知可有范例发给我一份!或者告诉我
哪儿有这方面的资料.E_mail:wzhage@hotmail.com,谢谢!!!
 
to lujuhe:
你写的for j := 1 to cnt - 1 do
sh.Copy(Sh);
sh和Sh分别表示什么?sh表示原来的sheet还是表示新生成的sheet,新生成的sheet是否应该自己先用
sheet.OleFunction("Add")来增加?如果想一次插入5张sheet,并且要插入到前一张的
后面,该如何处理?
 
呵呵,原来sh.Copy(Sh)中的sh和Sh表示同一个sheet,并不用先进行add,挺好用的,谢谢!
 
to LuJuhe:
bcb中是这样写的,sh.OleFunction( "Copy", sh );
但我想给新加的sheet更改一下名称,并且新生成的sheet放在最后面,该在copy中加入
什么参数?
 
copy时不能命名,需要在copy后,重新指定名字。

sh := v.WorkBooks[1].WorkSheets[iSheet];
sh.Name := '第' + inttostr(iSheet) + '页';
 
新生成的页放在最后,我没试过。 不过只要自己记录一个宏进行分析,应该可以得到。

我的做法是,模板文件只有一页,copy 多页后,重新从前到后命名,这样就不用管它们
的顺序了。
 
呵呵,我的想法和你的一样
 
谢谢您的回答,希望有机会再向您请教,如果方便的话,请将我加到msn中,
希望能和你多进行一些交流. wzhage@hotmail.com
 
用这个做报表吧
直接些xls文件!速度奇快!
 
TO :WANG 3003
我也正想实现你所实现的,能讲解的具体一些EMAIL给我吗?
EMAIL:jwh1228@163.com
 
后退
顶部