Como Importar Dados do Excel para Delphi ?
Boa tarde gostaria de saber como faço para ler dados do meu arquivo XLS e jogar no meu banco de dados pelo delphi 7 ?
Alguém poderia me ajudar ?
Alguém poderia me ajudar ?
Rodrigo Oliveira
Curtidas 0
Melhor post
Wesley Yamazack
31/10/2017
Opa Rodrigo, tudo bem?
Fiz um exemplo seguindo o artigo indicado e não tive problema, você poderia postar o seu código fonte para darmos uma analisada, amigo?
Vou colocar aki o código completo da UNIT para você ver.
Você está querendo jogar em um StringGrid para depois jogar no seu banco de dados, certo? Vc poderia enviar os dados direto do arquivo excel para o seu banco de dados, sem necessariamente passar para um StringGrid, sacou? Porém, sua planilha de excel precisa estar sempre no mesmo padrão para q não exista erros ou inconsistência.
Grande abraço
Fiz um exemplo seguindo o artigo indicado e não tive problema, você poderia postar o seu código fonte para darmos uma analisada, amigo?
Vou colocar aki o código completo da UNIT para você ver.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls, comobj;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
function XlsToStringGrid(xStringGrid: TStringGrid; xFileXLS: string): Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
XlsToStringGrid(StringGrid1,OpenDialog1.FileName)
end;
Function TForm1.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;
end.
Você está querendo jogar em um StringGrid para depois jogar no seu banco de dados, certo? Vc poderia enviar os dados direto do arquivo excel para o seu banco de dados, sem necessariamente passar para um StringGrid, sacou? Porém, sua planilha de excel precisa estar sempre no mesmo padrão para q não exista erros ou inconsistência.
Grande abraço
GOSTEI 2
Mais Respostas
Rodrigo Oliveira
30/10/2017
Estou seguindo esse exemplo porém ele está com vãrios erros
[url]https://www.devmedia.com.br/delphi-como-importar-dados-do-excel-para-stringgrid/21161[/url]
[url]https://www.devmedia.com.br/delphi-como-importar-dados-do-excel-para-stringgrid/21161[/url]
GOSTEI 0
Rodrigo Oliveira
30/10/2017
O cara muito obrigado mas erra erro meu mesmo já tinha corrigido mesmo assim valeu pela ajuda !
GOSTEI 0
Wesley Yamazack
30/10/2017
Excelente Rodrigo (y) q bom q deu certo meu amigo, grande abraço e bons códigos
GOSTEI 0
Julio Ap
30/10/2017
[dcc32 Error] frmtesteexcel.pas(44): E2003 Undeclared identifier: ''CreateOleObject''
[dcc32 Fatal Error] importexcel.dpr(5): F2063 Could not compile used unit ''frmtesteexcel.pas''
Galera tive esse erro ao compilar o arquivo, alguem pode me ajudar?
[dcc32 Fatal Error] importexcel.dpr(5): F2063 Could not compile used unit ''frmtesteexcel.pas''
Galera tive esse erro ao compilar o arquivo, alguem pode me ajudar?
GOSTEI 0