在OleContainer中显示Excel |
尚未結案
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
各位大大好:
我的程序希望这样:当点击DBGRID中的’大二进制数据‘的时候,
在DBGrid下面的OleContainer中显示相应的excel文件。
procedure TForm1.DBGrid1CellClick(Column: TColumn); var BS: TADOBlobStream; sF:String; begin if (Column.FieldName = 'Blobs') then begin BS := TADOBlobStream.Create(TBlobField(adodataset1.FieldByName('Blobs')), bmread); OleContainer1.LoadFromStream(BS); BS.Free; end; end;提示错误:流格式不正确 请问上面的功能怎么实现? 有劳各位了,谢谢! |
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
loadfromfile不是這樣用的,他是相對於savettofile來使用
你可以先將blob stream存成一暫存檔,然後用
olecontainer1.CreateObjectFromFile('c:\500.xls',false);
這樣才可以正常顯示
另外,你可以測試olecontainer1.savetofile('my.ole')
這樣你才可以用olecontainer1.loadfromfile('my.ole'),才不會出錯
永遠追不上技術更新的速度
------
星期一,二...無窮迴圈@@ |
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
pgdennis:
你好,先谢了!< >< >
请问一下,我点击一个 class="code">
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
BS: TADOBlobStream;
sFN: string; //FileName
begin
if (Column.FieldName = 'Blobs') then
begin
try
BS := TADOBlobStream.Create(TBlobField(adodataset1.FieldByName('Blobs')), bmread);
sFN := ExtractFilePath(application.ExeName) '123.xls';
BS.SaveToFile(sFN);
OleContainer1.CreateObjectFromFile(sFN, false);
finally
BS.Free;
end;
end;
end;
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
|
zzmbeyond01
中階會員 發表:98 回覆:167 積分:53 註冊:2003-09-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |