Importar dados Planilha Excel

Delphi

23/06/2004

Caros amigos

Um cliente tem uma planilha excel com muitos dados, onde são controlados custos com gastos de combustíveis. Preciso importar os dados da planilha para o sistema que foi desenvolvido em delphi 7 com firebird.

Alguém pode me dar uma ajuda, ou tem alguma rotina já pronta?

Aguardo Resposta

Raphael


Rbfonseca

Rbfonseca

Curtidas 0

Melhor post

Powerlog Tecnologia

Powerlog Tecnologia

18/05/2009

Se não for uma importação reccorente, eu usaria o [b:a2e1a85713]INSERTEX[/b:a2e1a85713] do IbExpert

[url]http://ibexpert.net/ibe/index.php?n=Doc.ScriptExecutive#Insertex[/url]


GOSTEI 1

Mais Respostas

Oberdan

Oberdan

23/06/2004

...mas no próprio Excel você tem a opção em Salvar o Documento como Tabela DBase, aí uma vez os dados salvos como uma tabela, fica mais fácil trabalhar, você mesmo pode criar a tabela receptora em Firebird, e usando o componente BatchMove do Delphi jogar de uma pra outra... não precisa nem criar aplicação, pois é muito fácil usar o BatchMove.

Espero ter ajudado.

Oberdan :!:


GOSTEI 0
Andradedenilson

Andradedenilson

23/06/2004

Uma forma de fazer e importação pode ser crinado uma função que carega as informações da planilha em um grid ai e so manipular a gravação


declare nas Uses
ComObj

function XlsToStringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean;
const
  xlCellTypeLastCell = $0000000B;
var
  XLApp, Sheet: OLEVariant;
  RangeMatrix: Variant;
  x, y, k, r: Integer;
begin
  Result := False;
  //Cria Excel- OLE Object
  XLApp := CreateOleObject(´Excel.Application´);
  try
    //Esconde Excel
    XLApp.Visible := False;
    //Abre o Workbook
    XLApp.Workbooks.Open(AXLSFile);
    Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];
    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
    //Pegar o número da última linha
    x := XLApp.ActiveCell.Row;
    //Pegar o número da última coluna
    y := XLApp.ActiveCell.Column;
    //Seta Stringgrid linha e coluna
    AGrid.RowCount := x;
    AGrid.ColCount := y;
    //Associaca a variant WorkSheet com a variant do Delphi
    RangeMatrix := XLApp.Range[´A1´, XLApp.Cells.Item[X, Y]].Value;
    //Cria o loop para listar os registros no TStringGrid
    k := 1;
    repeat
      for r := 1 to y do
        AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R];
      Inc(k, 1);
    until k > x;
    RangeMatrix := Unassigned;
  finally
    //Fecha o Excel
    if not VarIsEmpty(XLApp) then
      begin
        XLApp.Quit;
        XLAPP := Unassigned;
        Sheet := Unassigned;
        Result := True;
      end;
  end;


pra chamar a função vc pode utilizar um opendialog

if OpenDialog1.Execute then
  XlsToStringGrid(zGrid1,OpenDialog1.FileName);



espero ter ajudado.


GOSTEI 0
Sidimarsilva

Sidimarsilva

23/06/2004

Bom dia andradedenilson,

Eu estou tentando usar sua funçao mas esta dando erro:

Incompatible types: ´TStringGrud´ and ´TDBGrid´

vc saberia me dizer o motivo?


GOSTEI 0
Sidimarsilva

Sidimarsilva

23/06/2004

Desculpa problema resolvido eu estava usando TDbGrid ao inves do string...


GOSTEI 0
Powerlog Tecnologia

Powerlog Tecnologia

23/06/2004

Só pra complementar; tem outro tópico sobre o INSERTEX:

[url]http://forum.devmedia.com.br/viewtopic.php?t=100577[/url]


GOSTEI 1
POSTAR