关于blob字段的合并问题!(高分求救300分呀。我的代码如下:。。。。。。)(300分)

  • 主题发起人 主题发起人 xiao_wen
  • 开始时间 开始时间
只能用worddocument来合并了
 
看来这个问题只能自己解决了。
现在把自己的做法拿出来希望各位大虾能批评指正:
BlobFld2OleSaveasdoc是我写的一个标准的blob字段通过olecontianer保存为.doc文件的方法。
//========begin保存为doc文件========//
Procedure BlobFld2OleSaveasdoc(var dataQuery:TQuery;fldName:String; Ole: TOleContainer);
var
OleStream:Tstream;
NameId: String;
begin
NameId := dataQuery.FieldByName('element_Id').asstring;
OleStream := dataQuery.CreateBlobStream(dataQuery.fieldbyName(fldName),bmRead);
if OleStream.Size >0 then
begin
OLE.LoadFromStream(OleStream);
Ole.SaveAsDocument(TempPath+NameId+'.doc');//TempPath 为.doc文件的路径
Ole.Close ;
OleStream.free;
end else
begin
Ole.CreateObject('word.document',false);
end;
end;
//========end保存为doc文件========//

FileListBox1.Directory := TempPath;
FileLIstbox1.Mask :='*.doc';
//Filelistbox1 用于取“.doc”文件
//========begin合并doc文件========//
TempFileName := extractfilepath(Application.ExeName)+'TempdocFile/Tempdoc.dot';
//tempdoc.dot用于存放合并的主文件
wordapplication1.Connect;
wordapplication1.Documents.Open(TempFileName,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);WordDocument1.ConnectTo(wordapplication1.Documents.Item(TempFileName));
WordDocument1.Select ;
WordDocument1.Range.Cut ;//清空.dot文件
for FileNameOrder := 0 to FileListBox1.Items.Count -1 do
begin
FromFileName := TempPath + FileListBox1.Items.Strings[FileNameOrder];
wordapplication1.Documents.Open(FromFileName,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);
WordDocument2.ConnectTo(wordapplication1.Documents.Item(FromFileName));
WordDocument2.Select ;
WordDocument2.Range.Copy;
WordDocument2.Close ;
WordDocument1.Paragraphs.Last.Range.Paste;
end;{for for FileNameOrder := 0 to FileListBox1.Items.Count -1}
Wordapplication1.Visible:=true;//结果显示。
//========end合并doc文件========//


这种方法的缺点是比较慢。而且占用系统资源比较多。
现在有几个问题想问问各位朋友们了
1.不知道能有更好的方法没有。? (200)
2.还有在olecontainer中能不能设置为只读属性。如果不通过身份
验证的话就不能进行编辑。但可以打开浏览。(50)
3.如何把word的所有菜单和按钮都false掉?(通过olecontianer实现。用webbrowser实现的不算)(50)

 
斑竹:
我没有结束帖子的。可怎么就结束了??
能让我重新分配一下分数吗? 分数给的非常的不对呀。而且问题还没有讨论完的。
 
后退
顶部