紧急!!!需要把许多WORD文件的修改保存并显示
我需要把许多WORD文件存到数据库(或其他地方),然后提取出来修改,保存,然后在打印。在这个应用中,不需要显示WORD的全部菜单,但要有能实现表的编辑功能菜单,而且要求显示在应用程序框架里面,请问怎么可以实现,哪位能给我一些关于这方面的资料和代码,不胜感激!
我用olecontainer试了一下,发现会有所有菜单,而且打开不同的文件切换起来很慢,并且打开的状态为不可编辑,如果右键点击编辑则出现变成WORD形式,而且不可返回。
有什么好的方法能在WORD文件和数据库间进行快速存取
问题点数:0、回复次数:4Top
1 楼luhualing(红狐兄弟)回复于 2003-11-01 22:36:58 得分 0
打开过程是这样的:
一,从数据库取出WORD文件,保存到指定一个文件夹下面,并给一个文件名称(*.doc)
二,用OLE控件联接WORD文件并打开
保存过程是这样的
一,当WordApplication1的ONDocumentBeforeSave发生时,将当前打开的文件另保存为,然后反另保存为的这个WORD文件保存到数据库。
具体做法是:
下面是从数据取出并打开,这是我的原代码,你自己修改一下
至于保存,代码太多了
procedure tfrmConEdit.P_ShowModeText(iContractID:integer);
var
Filename,PasswordDocument,PasswordTemplate,WritePasswordDocument,
WritePasswordTemplate,Encoding,ConfirmConversions,ReadOnly,
AddToRecentFiles,Revert,Visible,Format,ItemIndex:olevariant;
strContractText:string;
smContractText:TMemoryStream;
begin
if bbtnAdd.Caption ='&C.取消' then //当前为增加合同记录,因此不经过从数据库装载后再浏览
begin
if trim(edtPath.Text) <>'' then //当路径为空是,不浏览,不为空则对当前路径的浏览
strContractText:=edtPath.Text
else
exit;
end else //不是增加过程中的浏览
begin
if adoqBaseInfo.RecordCount =0 then
exit;
strContractText:=ExtractFilePath(Application.ExeName)+'..\program\contract\合同文本.doc';
smContractText:=TMemoryStream.Create(); //建立内存变量
with dmSystem.adoqSys do
begin
if active then
close;
sql.clear;
sql.add('select ContractID,ContractText from T_ContractText');
sql.Add('where ContractID='+inttostr(iContractID)+'');
open;
if not eof then //找到这条记录,将二进制字段内容付给变量smModeText
begin
TblobField(fields[1]).SaveToStream(smContractText);
if smContractText.Size>0 then //当二进制字段内容不为空
begin
smContractText.SaveToFile(strContractText);
end else
begin
showmessage('数据装载不能功,不能浏览!');
smContractText.Free;
exit;
end;
end;
end;
smContractText.Free;
end;
frmConEdit.Visible:=false;
{联接WORD}
wordapplication1.connect;
wordapplication1.visible := true;
wordapplication1.caption := '柳钢物资管理系统--合同管理模块';
{打开一个指定的WORD文件}
FileName := strContractText;//ExtractFilePath(Application.ExeName)+'..\program\contract\合同文本.doc';
ConfirmConversions:= False;
ReadOnly:=False;
AddToRecentFiles:=False;
PasswordDocument:='';
PasswordTemplate:='';
Revert:=True;
WritePasswordDocument:='';
WritePasswordTemplate:='' ;
Format:=wdOpenFormatDocument;
Visible := true;
Encoding := '';
WordApplication1.Documents.Open(FileName,ConfirmConversions,ReadOnly,
AddToRecentFiles, PasswordDocument, PasswordTemplate,Revert,
WritePasswordDocument, WritePasswordTemplate, Format, Encoding, Visible);
ItemIndex:= 1;
WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));
WordApplication1.Options.CheckSpellingAsYouType := False;
WordApplication1.Options.CheckGrammarAsYouType := False;
end;Top
2 楼netstarter(乐乐)回复于 2003-11-01 23:11:55 得分 0
谢谢你,我还想知道怎么可以编辑,当然是在我的应用程序中编辑保存WORD,还有不知道速度如何?
请教,如果有源代码,能给我看看
software16@163.comTop
3 楼wzds2000()回复于 2003-11-02 01:07:11 得分 0
帮你顶。。。Top
4 楼luhualing(红狐兄弟)回复于 2003-11-02 10:27:45 得分 0
邮件已发。Top




