Importação informações de planilhas (Excel)

Introdução

Esta documentação servirá para as demandas que necessitam que o usuário importe informações de uma planilha usando os recursos do VsScripter, sendo específico para a aplicação do Office Excel.

 

Requisitos mínimos

  • Aplicação do Office Excel instalado.

 

Exemplo de uso do recurso no VsScripter

  1. Crie uma tela no VsScripter

  2. Adicione um botão (TButton) e aponte a propriedade do alinhamento para o topo (Alignment = altop)

  3. Adicione um painel (TPanel) e aponte a propriedade do alinhamento para toda a tela (Aligment = alClient)

 

  1. No código adicione os seguintes uses:

uses Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, SysUtils, Graphics, Grids, System;

 

  1. Crie um evento de clique para o botão e adicione o seguinte código:

procedure Button1Click(Sender: TObject); VAR vOpnDlg: TOpenDialog; vStrGrid: TStringGrid; begin Inherited(sender, 'OnClick'); vOpnDlg := TOpenDialog.Create(nil); vStrGrid := TStringGrid.Create(Panel1); vStrGrid.SetParentComponent(Panel1); vStrGrid.Align := alClient; if vOpnDlg.Execute(Handle) then XlsToStringGrid(vStrGrid, vOpnDlg.FileName); end;

 

  1. Em seguida adicione uma nova function chamada: XlsToStringGrid

Function XlsToStringGrid(xStringGrid: TStringGrid; xFileXLS: string): Boolean; const xlCellTypeLastCell = $0000000B; var XLSAplicacao, AbaXLS: OLEVariant; RangeMatrix: Variant; x, y, k, r: Integer; begin 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 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, null).Activate; // Pegar o número da última linha x := XLSAplicacao.ActiveCell.Row; // Pegar o número da última coluna y := XLSAplicacao.ActiveCell.Column; // Seta xStringGrid linha e coluna XStringGrid.RowCount := x; XStringGrid.ColCount := y; // Associaca a variant WorkSheet com a variant do Delphi RangeMatrix := XLSAplicacao.Range['A1', XLSAplicacao.Cells.Item[x, y]].Value; // Cria o loop para listar os registros no TStringGrid k := 1; repeat for r := 1 to y do XStringGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[k, r]; Inc(k); until k > x; RangeMatrix := Unassigned; finally // Fecha o Microsoft Excel XLSAplicacao.Free; AbaXLS.Free; end; end;

 

Após implementada a solução, compile a mesma e então clique no botão da tela e importe uma planilha dos formatos XLS e XLSX e o processo de importação será iniciado.

 

Nesse processo poderá ser acrescentada uma barra de progresso e outros recursos como importar em um TVsClientDataSet conforme as colunas do StringGrid e entre outras possibilidades que poderão surgir conforme as necessidades.