难道没有操作DELLPHI控制WORD的高手吗?这个问题为什么没有人回答呢,回答后送上全部积分(0分)

  • 主题发起人 主题发起人 wjl_my
  • 开始时间 开始时间
W

wjl_my

Unregistered / Unconfirmed
GUEST, unregistred user!
我把一个WORD 文档存入到sql server 中的IMAGE字段中,这个没问题,
现在是想通过DELPHI用WORK将这个内容显示出来,为什么总是出现这样子的错误呢?
project pzzqjcy.exe raised exception class eolexception with message
'文档的名称或路径无效。请试用如下建议:
*检查文档或驱动器的文件权限
*使用“文件”菜单中的“打开”命令来定位文档
(c:/yswzw.doc)'.process stopped.use step or run to continue

程序代码如下:
0、向数据库表中的IMAGE字段中存入.doc文档
  if opendialog1.Execute then
begin
filepath:=extractfileext(opendialog1.filename);
if (filepath='.doc') or (filepath='.rtf') then
begin
FileNameTemp :=opendialog1.filename ;
v:=createoleobject('word.application');
newdoc:=v.documents.open(filenametemp);
newdoc.saveas(filename:='c:/swzw.doc',fileformat:=3);
newdoc.close;
v.quit;

redtzw.clear;   //redtzw 表示richedit
redtzw.Lines.LoadFromFile('c:/swzw.doc');
deletefile('c:/swzw.doc');
end;

if (extractfileExt(filepath)='.txt') then
begin
redtzw.Clear;
redtzw.Lines.LoadFromFile(filepath);
end;
1、从表中取出文档字段
  (FieldByName('yswzw') as TBlobfield).savetofile('c:/yswzw.doc');
2、打开出现上述问题
   opendocument('c:/yswzw.doc');
wordapplication.Disconnect;

opendocument函数如下:
procedure TFrmfile_ysw.OpenDocument(filename: OleVariant);
var
confirmconversions,readonly,addtorecentfiles,passworddocument,passwordtemplate,revert,writepassworddocument,
writepasswordtemplate,format:olevariant;
itemindex:olevariant;
begin
confirmconversions:=false;
readonly:=false;
addtorecentfiles:=false;
passworddocument:='';
passwordtemplate:='';
revert:=true;
writepassworddocument:='';
writepasswordtemplate:='';
format:=wdopenformatdocument;
WordApplication.Documents.Open(filename,confirmconversions,readonly,addtorecentfiles,passworddocument,
passwordtemplate,revert,writepassworddocument,writepasswordtemplate,format);
itemindex:=1;
WordDocument.ConnectTo(wordapplication.documents.item(itemindex));
WordApplication.Options.CheckSpellingAsYouType:=false;
WordApplication.Options.CheckGrammarAsYouType:=false;
WordApplication.Visible:=true;
end;
 
http://delphibbs.com/delphibbs/dispq.asp?lid=737517
看看对你有没有帮助
 
这里有一个是别人的回答,好像以前我试成功过,你看看有什么区别?

ugvanxk 在 2002-9-23 13:05:44 提供了如下回答, 请您查阅和评估:
--------------------------------------------------------------------------
---
//摘自 中文开发在线
///注意设置一下blobsize,否则大的文件存不进读不出
//路径自己可以制定一个固定的
数据库SQL Server,存放文件的字段类型Image
Create Table MyTable
(
FileName VarChar(20),
FileSource Image
)
存放文件到数据库

var FileName :String;
FileName := ExtractFileName(OpenDialog1.FileName);
with Query dobegin Close;
Sql.Clear;
Sql.Add('INSERT INTO MyTable VALUES (:FileName,:FileSource)');
ParamByName('FileName').AsString := FileName;
ParamByName('FileSource').LoadFromFile(OpenDialog1.FileName,ftBolob);
ExecSQL;
end;



从数据库中取出文件

var FileName :String;
begin
with Query do begin
Close;
Sql.Clear;
Sql.Add('SELECT * FROM MyTable WHERE FileName = '?'');
Open;
FileName := 'c:/'+FieldByName('FileName').AsString;
(FieldByName('FileSource') AS TBlobField).SaveToFile(FileName);
end;
end;
 
我的做法如下:(我有一个保存文件后缀的字段'content_ext')
procedure Tgwsf_Form.read_ButClick(Sender: TObject);
var temp_name:string;
file_stream:TMemoryStream;
begin
file_stream:=TMemoryStream.Create;
try
TBlobField(table.FieldByName('xx_content')).savetoStream(file_stream);
temp_name:=EXtractfilepath(Application.exename)+'temp'+table.FieldByName('content_ext').asstring ;
file_stream.savetofile(temp_name);
try
ShellExecute(handle, 'open', pchar(temp_name), nil, nil, SW_SHOWNORMAL);
except
messagebox(Application.handle,pchar('文档打开失败,请确认该文件格式是否关联正确!'),'错了!',MB_OK+MB_ICONSTOP);
end;
finally
file_stream.Free;
end;

end;
 
后退
顶部