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
Crie uma tela no VsScripter
Adicione um botão (
TButton
) e aponte a propriedade do alinhamento para o topo (Alignment = altop
)Adicione um painel (
TPanel
) e aponte a propriedade do alinhamento para toda a tela (Aligment = alClient
)
No código adicione os seguintes uses:
uses
Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
ExtCtrls, SysUtils, Graphics, Grids, System;
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;
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.