Fórum Delphi7 com broffice #365234
19/10/2008
0
Tenho importado e exportado usando excel sem problemas , mas agora preciso fazer isto com OO.
Usei o codigo que segue para abrir um NOVO arquivo calc mas preciso abrir um arquivo existente.
Poderiam me esclarecer?
var
parametro, OpenOffice, OpenDesktopOpenOffice, CalcOpenOffice, SheetsOpenOffice, SheetOpenOffice: Variant;
x, y: integer;
arquivo: string;
function CriaParametroOpenOffice(nome: string; tipoData: variant): variant;
var
reflection: variant;
begin
reflection:=OpenOffice.CreateInstance(´com.sun.star.reflection.CoreReflection´);
reflection.forName(´com.sun.star.beans.PropertyValue´).createObject(result);
result.Name:=nome;
result.Value:=tipoData;
end;
function FileName2URL(FileName: string): string;
begin
result:=´´;
if (LowerCase(copy(FileName,1,8)) <> ´file:///´) then
result:=´file:///´;
result:=result + StringReplace(FileName, ´\´, ´/´, [rfReplaceAll, rfIgnoreCase]);
end;
begin
arquivo:=FileName2URL(´c:\teste.ods´);
OpenOffice:=CreateOleObject(´com.sun.star.ServiceManager´);
OpenDesktopOpenOffice:=OpenOffice.CreateInstance(´com.sun.star.frame.Desktop´);
parametro:=VarArrayCreate([0, 0], varVariant);
parametro[0]:=CriaParametroOpenOffice(´Hidden´,True);
CalcOpenOffice:=OpenDesktopOpenOffice.LoadComponentFromURL(´private:factory/scalc´, ´_blank´, 0, parametro);
SheetsOpenOffice:=CalcOpenOffice.Sheets;
SheetOpenOffice:=SheetsOpenOffice.getByIndex(0);
for x:=0 to 9 do
for y:=0 to 9 do
SheetOpenOffice.GetCellByPosition(x,y).SetString(IntToStr(x + 1) + ´ X ´ + IntToStr(y + 1));
parametro:=VarArrayCreate([0, 0], varVariant);
parametro[0]:=CriaParametroOpenOffice(´Hidden´,False);
CalcOpenOffice.StoreToURL(arquivo, parametro);
OpenDesktopOpenOffice.LoadComponentFromURL(arquivo, ´_blank´, 0, parametro);
OpenOffice:=Unassigned;
end;
Usei o codigo que segue para abrir um NOVO arquivo calc mas preciso abrir um arquivo existente.
Poderiam me esclarecer?
var
parametro, OpenOffice, OpenDesktopOpenOffice, CalcOpenOffice, SheetsOpenOffice, SheetOpenOffice: Variant;
x, y: integer;
arquivo: string;
function CriaParametroOpenOffice(nome: string; tipoData: variant): variant;
var
reflection: variant;
begin
reflection:=OpenOffice.CreateInstance(´com.sun.star.reflection.CoreReflection´);
reflection.forName(´com.sun.star.beans.PropertyValue´).createObject(result);
result.Name:=nome;
result.Value:=tipoData;
end;
function FileName2URL(FileName: string): string;
begin
result:=´´;
if (LowerCase(copy(FileName,1,8)) <> ´file:///´) then
result:=´file:///´;
result:=result + StringReplace(FileName, ´\´, ´/´, [rfReplaceAll, rfIgnoreCase]);
end;
begin
arquivo:=FileName2URL(´c:\teste.ods´);
OpenOffice:=CreateOleObject(´com.sun.star.ServiceManager´);
OpenDesktopOpenOffice:=OpenOffice.CreateInstance(´com.sun.star.frame.Desktop´);
parametro:=VarArrayCreate([0, 0], varVariant);
parametro[0]:=CriaParametroOpenOffice(´Hidden´,True);
CalcOpenOffice:=OpenDesktopOpenOffice.LoadComponentFromURL(´private:factory/scalc´, ´_blank´, 0, parametro);
SheetsOpenOffice:=CalcOpenOffice.Sheets;
SheetOpenOffice:=SheetsOpenOffice.getByIndex(0);
for x:=0 to 9 do
for y:=0 to 9 do
SheetOpenOffice.GetCellByPosition(x,y).SetString(IntToStr(x + 1) + ´ X ´ + IntToStr(y + 1));
parametro:=VarArrayCreate([0, 0], varVariant);
parametro[0]:=CriaParametroOpenOffice(´Hidden´,False);
CalcOpenOffice.StoreToURL(arquivo, parametro);
OpenDesktopOpenOffice.LoadComponentFromURL(arquivo, ´_blank´, 0, parametro);
OpenOffice:=Unassigned;
end;
Rm
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)