PROCEDURE PARA IMPORTAR DADOS DO EXCEL SEM USAR O STRINGGRID
19/04/2022
0
Olá, pessoal. Preciso de uma procedure que ao clicar no botão importar abre a pasta para selecionar o arquivo xls e logo em seguida importe para o delphi e insira os dados em edits e combobox. Eu fiz uma procedure só que apresenta um erro que diz "Não foi possível localizar o arquivo. Talvez ele tenha sido removido, excluído ou movido?". Já tentei várias coisas e não funciona. No código o problema sempre dá na linha de Excel.Application.
Segue o código:
procedure TfrmNomeDoSoftware.importarExcelClick(Sender: TObject);
// aquiiiiiiiiiiii
const
xlCellTypeLastCell = $0000000B;
var
XLSAplicacao, AbaXLS: OLEVariant;
RangeMatrix: Variant;
linhas, colunas, k, r: Integer;
xFileXLS: string;
Result : Boolean;
begin
linhas := 0;
colunas := 0;
Result := False;
// Cria Excel- OLE Object
XLSAplicacao := CreateOleObject(''Excel.Application'');
try
// Esconde Excel
XLSAplicacao.Visible := False;
// Abre o Workbook
XLSAplicacao.Workbooks.Open(xFileXLS);
{ Selecione aqui a aba que você deseja abrir primeiro - 1,2,3,4.... }
XLSAplicacao.WorkSheets[1].Activate;
{ Selecione aqui a aba que você deseja ativar - começando sempre no 1 (1,2,3,4) }
AbaXLS := XLSAplicacao.Workbooks[ExtractFileName(xFileXLS)].WorkSheets[1];
AbaXLS.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
// Pegar o número da última linha
linhas := XLSAplicacao.ActiveCell.Row;
// Pegar o número da última coluna
colunas := XLSAplicacao.ActiveCell.Column;
// Associaca a variant WorkSheet com a variant do Delphi
RangeMatrix := XLSAplicacao.Range[''A1'', XLSAplicacao.Cells.item[linhas,
colunas]].Value;
finally ;
{edtCRazaoSocialEmpresa.Text := RangeMatrix[2 ,1];
edtQtIntervalo.Text := RangeMatrix[2, 2];
edtTempoIntervalo.Text := RangeMatrix[3, 2];
edtTDispTurno.Text := RangeMatrix[4, 2];
edtTempoTotalTurno.Text := RangeMatrix[5, 2];}
end;
begin
RangeMatrix := Unassigned;
// Fecha o Microsoft Excel
if not VarIsEmpty(XLSAplicacao) then
begin
XLSAplicacao.Quit;
XLSAplicacao := Unassigned;
AbaXLS := Unassigned;
Result := true;
end;
end;
Segue o código:
procedure TfrmNomeDoSoftware.importarExcelClick(Sender: TObject);
// aquiiiiiiiiiiii
const
xlCellTypeLastCell = $0000000B;
var
XLSAplicacao, AbaXLS: OLEVariant;
RangeMatrix: Variant;
linhas, colunas, k, r: Integer;
xFileXLS: string;
Result : Boolean;
begin
linhas := 0;
colunas := 0;
Result := False;
// Cria Excel- OLE Object
XLSAplicacao := CreateOleObject(''Excel.Application'');
try
// Esconde Excel
XLSAplicacao.Visible := False;
// Abre o Workbook
XLSAplicacao.Workbooks.Open(xFileXLS);
{ Selecione aqui a aba que você deseja abrir primeiro - 1,2,3,4.... }
XLSAplicacao.WorkSheets[1].Activate;
{ Selecione aqui a aba que você deseja ativar - começando sempre no 1 (1,2,3,4) }
AbaXLS := XLSAplicacao.Workbooks[ExtractFileName(xFileXLS)].WorkSheets[1];
AbaXLS.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
// Pegar o número da última linha
linhas := XLSAplicacao.ActiveCell.Row;
// Pegar o número da última coluna
colunas := XLSAplicacao.ActiveCell.Column;
// Associaca a variant WorkSheet com a variant do Delphi
RangeMatrix := XLSAplicacao.Range[''A1'', XLSAplicacao.Cells.item[linhas,
colunas]].Value;
finally ;
{edtCRazaoSocialEmpresa.Text := RangeMatrix[2 ,1];
edtQtIntervalo.Text := RangeMatrix[2, 2];
edtTempoIntervalo.Text := RangeMatrix[3, 2];
edtTDispTurno.Text := RangeMatrix[4, 2];
edtTempoTotalTurno.Text := RangeMatrix[5, 2];}
end;
begin
RangeMatrix := Unassigned;
// Fecha o Microsoft Excel
if not VarIsEmpty(XLSAplicacao) then
begin
XLSAplicacao.Quit;
XLSAplicacao := Unassigned;
AbaXLS := Unassigned;
Result := true;
end;
end;
Felipe Fagundes
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)