OleContainer调用word时,如何将两个以上的Word文件合成一个文件!急!(100分)

  • 主题发起人 主题发起人 zhangfeng0710
  • 开始时间 开始时间
Z

zhangfeng0710

Unregistered / Unconfirmed
GUEST, unregistred user!
OleContainer调用word时,word中的内容来源与数据库(事先通过OleContainer调用word时,保存到数据库里的),比如 先取出数据库中表的第一条记录,写入word.doc中(word文件是临时的),在取出第二条,追加写入上面的word.doc中,实际上形成一种连接word的效果.
请高手们务必帮帮忙!问题解决马上给分!谢谢!
 
可以把第一个放到一个wordapp变量中,然后用
wordApp.selection.EndKey(wdStory);//把光标定到最后
如果另一个是文件就:
WordApp.Selection.InsertFile(fn, '', False, false, false);
你放数据库中的,是否可以内容2放到粘贴板中,这样:
wordapp.selection.paste;
我对数据库操作work文档不太熟,呵呵

 
在程序中用 wordApplication 打开你要添加的文件,document.sellAll,
在Ole打开的 word中 olecontainer.oleobject.paste;

我试试再回答你.....
 
WordApp.Selection.TypeText();
光标到最后,直接写[:)]
 
各位大侠能不能在说详细点。
我的意思是想从数据库中做个循环查出想要的记录,然后从第一条记录开始往临时生成
的word.doc中写数据,直至最后一条。下面的代码是错的,只能写入第一条记录,我不
知如何修改能达到上面说的效果。还请大侠们指教。急!急!急!
MyFile:=TFileStream.Create(extractfilepath(application.ExeName)+'word.doc',fmCreate);
MyFile.Position:=0;
query.SQL.Clear;
query.SQL.Add('select * from scword where scwordid>=8000 order by scwordid');
query.Active:=true;
query.First;
for i:=0 to query.RecordCount-1 do
begin
TBlobField(query.FieldByName('scdoc')).SaveToStream(MyFile);
query.Next; //从这以后,不知如何解决
end;
MyFile.Free;
OleContainer1.createobjectfromfile(extractfilepath(application.ExeName)+'word.doc',true);
olecontainer1.DoVerb(0);
olecontainer1.Run;
oleshow:=true;
 
var
WordApp : OleVariant;

n,m:integer;

begin
if not VarIsEmpty(WordApp) then
begin
WordApp.DisplayAlerts := False;
WordApp.Quit;
VarClear(WordApp);
end;

WordApp := CreateOleObject('Word.Application');
WordApp.Documents.add;
WordApp.visible:=true;
for n:=0 to 100 do
WordApp.Selection.TypeText('aaaa '+inttostr(n)+char(10));
end;
 
to lingm;
真实不好意思,能不能在麻烦你一下,不知针对我上面那段代码,再结合你的代码该如何
跟改好了,我试了一下午,效果不是很好,还请指教,谢谢!
for i:=0 to adoword.RecordCount-1 do
begin
WordApp.Selection.TypeText('aaaa'+char(10));
// aaaa处是不是只能是string型,我试用了blob型不行,把aaaa换成
// TBlobField(adoword.FieldByName('scdoc')),请问该如何解决
adoword.Next;
end;
 
刚才试了一下
stoneking 的方法更好[8D]
 
哎呀!还是无冲下手呀!各位在帮帮忙!
我现在比较迷糊的还是,如何把重数据库取出的二进制流象
TBlobField(adoword.FieldByName('scdoc'))转换一下直接在最后插入到已创建好
的文件流中,急呀!
 
你的blob存的是word文件吧

先用ole(word)打开流1(记录1)
再用
WordApp.Selection.InsertFile(流2文件名, '', False, false, false);
这就连上了[:)][:)]
 
问题已解决,谢谢各位拉!
对了 lingm,顺便问一声 :
这句话中 WordApp.Selection.InsertFile(流2文件名, '', False, false, false);
流2文件名: 是文件流,还是二进制流。我是用文件流实现的。
 
多人接受答案了。
 
后退
顶部