如何存取doc文档(100分)

  • 主题发起人 主题发起人 lvjun99
  • 开始时间 开始时间
L

lvjun99

Unregistered / Unconfirmed
GUEST, unregistred user!
用paradox表结构如何存储doc文档(既有文字,又有图像),并用数据库
控件显示出来?
 
设为blob,
 
不是一句两句说得清楚,你的主要问题在哪里呢?
首先,机器中必须有word,在程序中用ole调用word处理, 去ole分类找找,都是这类问题。
 
呵呵,文字当然是没有问题了,但图象则不同,因为WORD使用OLE调和显示
大部分图象,

并用数据库控件显示出来? 这,好象还没有支持WORD显示的数据库控件吧:-)

不过,你可以存成临时文件再使用OLE显示。
 
to menxin : 是这样的,有一个表内容是:文件号,文件标题,文件内容。
如果文件内容全是文本,那非常好处理,我已经解决。现在的关键是文件内
容既有文本,也有图像,掺杂在一起,该用什么字段存储此内容,并能象备注
型字段一样显示出来。
用ole当然可以,但对客户端要求较多,不好,我想把文件内容存到数据库中
去,或者把文件内容存成一个文件,字段里只存一个文件名,关键是在走记录时,
如何能看到此文件内容。
 
cytown:图象也没什么问题,用stream可以搞定一切的。放个image动态调入不行吗?
lvjun99:如果你用多个文件存储可以用TOleContainer.loadfromfile,用字段的话
就用blob存放图象,将图象化为流,存入流不行吗?
 
呵呵,图象当然有问题了,首先,你不知道使用了哪些图象,其次,OLE的方法是
得到对象的地址(如:C:/TEMP/AAA.BMP)然后调用OLE程序使用,但假设这样:
test.doc中使用了 f:/test/fff.bmp,再假设你知道这个BMP文件,存到数据库
中,在调用时怎么办?把fff.bmp还原到f:/test/下吗?如果客户只有C、D两个
硬盘怎么办?

呵呵,没有考虑到吧?! :-)
 
看来只能采用OLE技术喽!?
 
利用 BLOB可以解决,你完全不必考虑文本和图象,因为你可以将整个DOC文档作为对象存入 BOLB中,如果需要示范可以向我索取.在这里可以给你一个简单的几条语句:
(注:ORACLe 数据库)
/* 读出数据库中的数据 */
begin
//建立临时文件
DocFile := ExtractFilePath(ParamStr(0)) + 'Temp.Doc';
//将字段内容存入临时文件
TBlobField(FieldByName('Context')).SaveToFile(DocFile);
end;
// OLE 容器
oleWord.DestroyObject;
//建立 OLE 关联
oleWord.CreateObjectFromFile(DocFile, False);
oleWord.DoVerb(1);

存入数据库中可以逆向操作.
 
如果只有文字和图片,我建议你把Word文档存成RTF文件,用blob写入数据库,
在你的界面上放一个可以支持图片的RTF控件, 显示时,利用stream 读入
这样显示起来较快,比用ole好. 但是RTF控件不支持表格.
 
接受答案。
 

Similar threads

后退
顶部