從資料庫中讀取docx格式的檔案,顯示內容有錯誤,點確認后又能打開;代碼如下:
procedure TForm1.RzGroup7Items0Click(Sender: TObject);
var MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TadoBlobStream;
begin
MyFile:=TFileStream.Create( 'd:\temp.tmp ',fmCreate);
with adoQuery1 do
begin
open;
last;
Stream := TadoBlobStream.Create(FieldByName( 'text') as TBlobField, bmRead);
MemSize := Stream.Size;
Inc(MemSize);
Buffer := AllocMem(MemSize);
try
Stream.Read(Buffer^,MemSize);
MyFile.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
end;
if FileExists( 'd:\temp.DOCX')
then
DeleteFile( 'd:\temp.DOCX');
if FileExists( 'd:\temp.tmp ')
then
begin
RenameFile( 'd:\temp.tmp ', 'd:\temp.DOCX');
ShellExecute(handle, 'open', 'd:\temp.DOCX',Nil, nil,SW_SHOWNORMAL);
end;
end;
uj5u.com熱心網友回復:
讀入檔案與讀出(寫)檔案方式要一致。uj5u.com熱心網友回復:
直接寫檔案不行嗎:TBlobField(DataSet1.FieldByName('FileData')).SaveToFile(Path+FileName);
uj5u.com熱心網友回復:
謝謝,以上代碼對doc 檔案,沒有任何問題,對docx就會出現打開錯誤,可能是word2010與word2003不同的問題,但是我也不知道有什么不同。uj5u.com熱心網友回復:
docx是2007版,doc是2003以下版。這個問題是你的系統安裝的是office2003版,不能打開兼容docx檔案。
建議你安裝一下支持2007的兼容包,約40M。另一辦法,使用與Office兼容的WPS。問題應該能解決。
如果找不到兼容包,我可以傳給你。
uj5u.com熱心網友回復:
兼容包檔案名:FileFormatConverters.exe
uj5u.com熱心網友回復:
我裝的是2010,應該不是這個問題,謝謝!轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90358.html
標籤:數據庫相關
上一篇:求教 FMX Mobile的MediaPlay沒效果
下一篇:看圖說話,請問這是什么意思?
