GARANTIR DESCONTO

Fórum Como Importar Dados do Excel para Delphi ? #587322

30/10/2017

0

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 ?
Rodrigo Oliveira

Rodrigo Oliveira

Responder

Post mais votado

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.


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

Wesley Yamazack

Wesley Yamazack
Responder

Gostei + 2

Mais Posts

30/10/2017

Rodrigo Oliveira

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]
Responder

Gostei + 0

31/10/2017

Rodrigo Oliveira

O cara muito obrigado mas erra erro meu mesmo já tinha corrigido mesmo assim valeu pela ajuda !
Responder

Gostei + 0

01/11/2017

Wesley Yamazack

Excelente Rodrigo (y) q bom q deu certo meu amigo, grande abraço e bons códigos
Responder

Gostei + 0

26/02/2018

Julio Ap

[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?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar