Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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.

  • No labels