|
kabe さん、こん**は。Hidemi Oya です。
Pipe を使えば HTML ファイルを保存せずに Calc を開くことができそうですが、今のところ上手くいきません。Pump も併用しないとだめなようです。
とりあえず OOo の一時ファイルを使って、HTML ファイルを保存せずに Calc を開けるようにはなりましたので、紹介しておきます。
var
OpenOffice, OpenDesktop, oStream, Params : Variant;
html: string;
begin
Screen.Cursor := crHourGlass;
try
OpenOffice := CreateOleObject('com.sun.star.ServiceManager');
Params := VarArrayCreate([0, 2], varVariant);
Params[0] := OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Params[0].Name := 'FilterName';
Params[0].Value := 'calc_HTML_WebQuery';
Params[1] := OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Params[1].Name := 'DocumentTitle';
Params[1].Value := 'Title'; // ここにドキュメントのタイトルを記述
Params[2] := OpenOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
Params[2].Name := 'InputStream';
Params[2].Value := OpenOffice.createInstance('com.sun.star.io.TempFile');
// Params[2].Value := OpenOffice.createInstance('com.sun.star.io.Pipe');
oStream := OpenOffice.createInstance('com.sun.star.io.TextOutputStream');
oStream.setOutputStream(Params[2].Value);
oStream.setEncoding('Shift_JIS');
oStream.writeString(html); // ここに HTML が入った文字列を指定
oStream.closeOutput;
Params[2].Value.seek(0); // Pipe を使う場合はコメントアウトすること
OpenDesktop := OpenOffice.createInstance('com.sun.star.frame.Desktop');
OpenDesktop.LoadComponentFromURL('private:stream', '_blank', 0, Params);
finally
Screen.Cursor := crDefault;
end;
end;
|
|