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;


Rm

Rm

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar