Delphi - Como Importar Dados do Excel para StringGrid
Veja nesta Quick Tips, irei mostra como podemos criar um função para importar dados de uma planilha de Excel para um StringGrid usando o Delphi.
Olá galera, nesta Quick Tips, irei mostra como podemos criar um função para importar dados de uma planilha de Excel para um StringGrid usando o Delphi.
Vamos começar criando um novo projeto e salvando o mesmo, salvar a unit com uFrmPrincipal.pas, e nela vamos adicionar :
- 1 BitBtn (BtnImportar)
- 1 OpenDialog (OpenDialog1)
- 1 StringGrid (StringGrid1)
Antes de iniciarmos, precisamos declarar uses em ComObj
Vamos criar uma função
type
TFrmPrincipal = class(TForm)
BtnImportar: TBitBtn;
StringGrid1: TStringGrid;
OpenDialog1: TOpenDialog;
private
function XlsToStringGrid(XStringGrid: TStringGrid; xFileXLS: string): Boolean;
{ Private declarations }
public
{ Public declarations }
end;
Function TFrmPrincipal.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 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
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, 1);
until k > x;
RangeMatrix := Unassigned;
finally
// Fecha o Microsoft Excel
if not VarIsEmpty(XLSAplicacao) then
begin
XLSAplicacao.Quit;
XLSAplicacao := Unassigned;
AbaXLS := Unassigned;
Result := True;
end;
end;
end;
E por final vamos ver como usar a função criada, no evento onclick do BtnIportar implemente o seguinte.
procedure TFrmPrincipal.BtnImportarClick(Sender: TObject);
begin
if OpenDialog1.Execute then
XlsToStringGrid(StringGrid1,OpenDialog1.FileName)
end;
Fico por aqui ate à próxima Quick Tips. Baixe o exemplo completo neste post.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo