不使用临时文件对WORD进行操作(100分)

  • 主题发起人 主题发起人 jobsxy
  • 开始时间 开始时间
J

jobsxy

Unregistered / Unconfirmed
GUEST, unregistred user!
准备做个公共方法,传入流,此方法用WORD把流打开,用户可以通过另存方式保存为指定的文件,同时屏蔽菜单里的保存。

要求是不能使用临时文件进行操作。
 
关注此问题.能否说一说你的思路吗?
 
从数据库中读入。。。。。
VAR
bs:tblobstream;
BEGIN
try
bs:=tblobstream.Create(tblobfield(query1.fieldbyname('blobfield')),bmread);
except
exit;
end;
if bs.size=0 then
begin
showmessage('文件没录入');
bs.Free;
exit;
end;
with oleform.olecontainer1 do
try
begin
loadfromstream(bs);
bs.free;
if state<>osempty then
begin
oleform.drwj.enabled:=false;
oleform.ShowModal;
end;
end;
except;
end;
 
经常有这种情况,用户定义好文档模板并存入数据库,然后根据条件自动调出。
通常的作法是从数据库取出BLOB,然后存为一临时的DOC文件,然后再OLE调入
其实我的想法与其唯一的区别就在于从数据库取出直接就用了
比如
word.documents.open(指定文件);
将这句改为类似
word.documents.open(指定流)
 
我想这问题不象jobsxy说得这么简单,这里面应该会涉及到Com中的统一数据传输的东西,
或许就将WordDoc转换为一个IPersistStream接口就能解决问题,也许还要进行更多的步骤,有待实验.
ZZHI所说的方法我知道肯定没有问题,那是因为这种方式是通过OLE的方式来进行的,本来就支持了这个功能.
 
这个问题实际上与 以下问题在本质上是一样的.
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2187104
 
LDeng:帮忙!
各路大侠,快出手!
 
多人接受答案了。
 
后退
顶部