Importar dados de uma planilha OpenOffice (BrOffice)
04/09/2006
0
minha dúvida é: como faço para [b:b338b6cd57]importar[/b:b338b6cd57] dados de uma planilha utilizando OpenOffice (BrOffice)?
Eu sei como exportar dados, inclusive já implementei minha aplicação para exportar tanto para o Excel quanto para planilhas OpenOffice mas quanto à importação eu não sei como agir. Quero que a aplicação importe arquivos .xls ou .sxc utilizando este aplicativo (para o caso de máquinas que não possuem licença do MSOffice). Alguém já utilizou alguma função deste tipo? Muito obrigado.
Zooropa
Post mais votado
23/01/2017
Att!
Mac
Mais Posts
23/01/2017
Ismael Liborio
Tenho examente o mesmo problema :/ .
Alguém pode ajudar?
Obrigado.
Cumprimentos
24/01/2017
Marco Antônio
Falando por alto, a unica coisa que precisamos para fazer conexões com fonte de dados externa que nesse caso seria '*.xls' ou '*.csv' ou outra fonte que seja planilha sempre eh o driver ODBC. Na verdade isso vai depender de qual IDE vcs estão usando. Caso seja versões
XE, os drivers ODBC já são nativos e não precisa instalar.
Apartir dae, uma vez com isso configurado agora é atribuir a fonte de dados a Query ou ClientDataSet e ali atraves de um loop percorrer
os dados e ir inserindo na sua base de dados.
Colocar um font que demonstre isso é meio complicado, mas há videos aulas Abertas( gratuitas ) aqui no DevMedia que auxiliam nisso.
Não fui mto objetivo, mas qualquer coisa avisa ae.
Abc.
27/01/2017
Ismael Liborio
Obrigado pela sua resposta, a ligação ou a conexão é simples, assim como o exportar(tenho um procedimento que exporta a minha Base de Dados em Delphi para 1 calc do OpenOffice), a dificuldade é mesmo importar, mais precisamente saber limites com dados do calc do openoffice para depois criar o Loop e inserir numa StringGrid, só consigo encontrar o limite máximo de linhas e colunas do calc. Segue abaixo o meu problema:
procedure TFormImportar.ButImportarClick(Sender: TObject);
var
vfile,url,teste: string;
mgr,dt,calc,sheets,sheet1,args: Variant;
x,y: integer;
begin
args := VarArrayCreate([0,-1],varVariant);
mgr := CreateOleObject(''com.sun.star.ServiceManager'');
dt := mgr.createInstance(''com.sun.star.frame.Desktop'');
if OpenDialog1.Execute then begin
vfile := OpenDialog1.FileName;
url:= ''file:///''+ vfile;
calc := dt.loadComponentFromURL(url,''_blank'' , 0, args);
sheets := calc.getSheets;
sheet1 := sheets.getByIndex(0);
teste := sheet1.getCellByPosition(2,18).string; //***funciona dá o texto da célula
x:= sheet1.getColumns.count; //limite máximo de colunas no calc, mas o pretendido é o limite que tem dados
y:= sheet1.getrows.count; // limite máximo de linhas no calc, mas o pretendido é o limite que tem dados
//depois de ter os limites de coluna e linha com dados
// criar loop e escrever na grid
end;
end;
24/06/2022
Dirceu Morais
Reativando o tópico, rsrsrs.
Gostaria de saber o amigo conseguiu resolver este problema (y:= sheet1.getrows.count; // limite máximo de linhas no calc, mas o pretendido é o limite que tem dados)?
Também estou precisando de pegar o total de linhas preenchidas pelo broffice.
Para importação em excel eu tenho esta função:
Function TForm1.qLinhas(pFile,pPlan : String): Integer; var XLApp, Sheet: Variant; begin XLApp:= CreateOleObject('Excel.Application'); try XLApp.WorkBooks.Open(pFile,0,True); Try Sheet := XLApp.Workbooks[1].WorkSheets[pPlan]; Result := Sheet.Cells.SpecialCells(11).Row Except KDialog('Nome da Guia (ABA) na planilha está errado o correto é: '+pPlan,'Alerta','ERRO'); Result := 0; end; finally XLApp.Quit end end;
Se alguém souber o comando ou a função que me traga a "quantidade de linhas broffice" ficaremos muitos agradecidos.
Att.
Clique aqui para fazer login e interagir na Comunidade :)