Ir ao conteúdo
  • Cadastre-se

Importação de dados do excel


Posts recomendados

Boa Tarde!

Criei um procedimento no programa para importar dados de duas planilhas de um arquivo do excel para duas Stringrid no delphi 2010, usando o opendialog. Fiz duas funções separadas para cada stringrid. Porém, na primeira stringrid so aparece as 5 primeiras linhas da planilha do excel. Alguem poderia me dizer o que há de errado?

Segue código abaixo das 2 funções:

function XlsToStringGrid1(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
excel,planilha2: variant;
i, j, x, y, cont: integer;

begin
//cursor tempo comunicar ao usuário para que ele aguarde enquanto o formulário está sendo carregado mudando o cursor para ampulheta
try
Screen.Cursor:=crHourglass;
//abrindo o arquivo
excel:=CreateOleObject('Excel.Application'); // cria uma aplicação do Excel

//--IMPORTANTO PARA 1ª GRID.
begin
excel.workbooks.open(AXLSFile);//Abre o exel
//Abrindo primeira planilha

planilha2:=excel.workbooks[1].WorkSheets[1];
excel.Cells.SpecialCells($0000000B, EmptyParam).Activate;
//Pegar o número da última linha
x:=excel.ActiveCell.Row;
//Pegar o número da última coluna
y:=excel.ActiveCell.Column;
//Seta Stringgrid linha e coluna
AGrid.RowCount:=x;
AGrid.ColCount:=y;

//Imprimindo valores na primeira grid
for i:=1 to x do
for j:=1 to uOutput.frmOutput.stgrdOutput1.ColCount-1 do
uOutput.frmOutput.stgrdOutput1.cells[j,i]:=planilha2.cells[i+1,j+1];
end;
excel.Application.DisplayAlerts:= False;
Excel.WorkBooks[1].Close;
excel.quit;
Excel := Unassigned;
planilha2 := Unassigned;
except
Application.MessageBox('Unknown error during conversion. '+
'Please, verify your MS-Excel files.','Error',MB_OK + MB_ICONEXCLAMATION);
end;
Screen.Cursor:=crDefault;
end;

function XlsToStringGrid2(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
xlCellTypeLastCell = $0000000B;
var
excel,planilha2, planilha1: variant;
i, j, x, y, l, c, cont: integer;
begin
//cursor tempo comunicar ao usuário para que ele aguarde enquanto o formulário está sendo carregado mudando o cursor para ampulheta
try
Screen.Cursor:=crHourglass;
//abrindo o arquivo
excel:=CreateOleObject('Excel.Application'); // cria uma aplicação do Excel
//--IMPORTANTO PARA 2ª GRID.
begin
excel.workbooks.open(AXLSFile);//Abre o exel
//Abrindo primeira planilha
planilha2:=excel.workbooks[1].WorkSheets[2];
planilha2.Cells.SpecialCells($0000000B, EmptyParam).Activate;
//Pegar o número da última linha
x:=excel.ActiveCell.Row;
//Pegar o número da última coluna
y:=excel.ActiveCell.Column;
//Seta Stringgrid linha e coluna
AGrid.RowCount:=x;
AGrid.ColCount:=y;
//Imprimindo valores na primeira grid
for i:=0 to x do
for j:=0 to y do
uOutput.frmOutput.stgrdOutput2.cells[j,i]:=planilha2.cells[i+1,j+1];
end;
//cursor normal
excel.Application.DisplayAlerts:= False;
Excel.WorkBooks[1].Close;
excel.quit;
Excel := Unassigned;
planilha2 := Unassigned;
except
Application.MessageBox('Unknown error during conversion. '+
'Please, verify your MS-Excel files.','Error',MB_OK + MB_ICONEXCLAMATION);
end;
Screen.Cursor:=crDefault;
end;

Adicionei ao formshow o procedimento para chamar a função, da seguinte forma:

procedure TfrmOutput.FormShow(Sender: TObject);
var
i,j:integer;
maxmatrizdados:array of array of single;

begin
if OpenDialog1.Execute then
Begin

XlsToStringGrid1(stgrdOutput1, OpenDialog1.FileName);
XlsToStringGrid2(stgrdOutput2, OpenDialog1.FileName);
End
else
begin
Screen.Cursor:=crDefault; //cursor padrão do delphi
Exit;
end;
operacao:=false;

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...