如何把一个Word文档流直接加载到OleContainer中?

procedure LoadOleCtnrFromStream(OleContainer: TOleContainer; Stream: TStream);
const
  DataFormatCount
= 2;
  StreamSignature
= $434F4442; {'BDOC'}
type
  TStreamHeader
= record
   
case Integer of
     
0: ( { New }
        Signature: Integer;
        DrawAspect: Integer;
        DataSize: Integer);
     
1: ( { Old }
        PartRect: TSmallRect);
 
end;
var
  Header: TStreamHeader;
  Mem: TMemoryStream;
begin
  Mem:
= TMemoryStream.Create;
  try
    Header.Signature :
=  StreamSignature;
    Header.DrawAspect :
= 1;
    Mem.Write(Header, SizeOf(Header));
    Mem.CopyFrom(Stream,
0);
    Mem.Position :
= 0;
    OleContainer.LoadFromStream(Mem);
   
//OleContainer.DoVerb(0);//就可以通过OleContainer.OleObject得到Word文档对象
  finally
    Mem.Free;
 
end;
end;

//测试代码,当然你也可以通过从数据库的一字段取出Word文档然后放到一个流里传给LoadOleCtnrFromStream函数
procedure TForm1.Button4Click(Sender: TObject);
var
  fileStream: TFileStream;
begin
  fileStream :
= TFileStream.Create('D:/1.doc', fmOpenReadWrite);
  try
    LoadOleCtnrFromStream(OleContainer, fileStream);
  finally
    fileStream.Free;
 
end;
end;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值