vitow 0 Denunciar post Postado Novembro 20, 2007 galera estou precisando de uma ajuda: estou querendo importar dados de uma planilha do excel para o Delphi, eu iria manipular esses dados e depois armazenar no BD MySQL!.... alguém tem alguma idéia de como posso fazer isso??? grato. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2007 Tem duas formas eficientes de se fazer, uma é usando componentes, pode ser da paleta ADO, e outra acessando diretamente o Excel, podendo carregar tudo em um TStringGrid e trabalhar com os valores, qual das duas formas você acha que seria melhor para a sua situação ? Compartilhar este post Link para o post Compartilhar em outros sites
vitow 0 Denunciar post Postado Novembro 21, 2007 marcio... acho que seria melhor utilizando o TStringGrid, carregando todos os dados do excel e depois eu os manipularei, selecionado os dados que eu quero ou não e salvar no MySQL. mas eu nunca usei o TStringGrid, o procurei na paleta não achei!!... como faço para utiliza-lo e carregar o dados do excel nele?? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2007 O mesmo se encontra na paleta Additional... pode criar a seguinte função: 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; end; Vai retornar se conseguiu ou não carregar, precisa apenas colocar um StringGrid na tela, e chamar a função, algo como: XlsToStringGrid(StringGrid1,'c:\arquivo_excel.xls'); Compartilhar este post Link para o post Compartilhar em outros sites
vitow 0 Denunciar post Postado Novembro 21, 2007 oi marcio.... estudei todo o código!! testei e ficou perfeito.... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif obrigado!! mas.... vou te explorar mais um pouquinho hehehhehe tipo, o usuário teria que selecionar o local onde o arquivo está localizado, então eu teria que criar aquele formulário de localização de arquivos do windows?? ou o windows já disponibiliza isso?? por exemplo: no delphi você clica no File > Open abrirá uma interface onde o usuário seleciona o arquivo que deseja abrir... entendeu??? eu to querendo desenvolver isso tambem! Onde o usuário selecionasse a planilha que ele queira abrir. Você teria como me dar mais essa Luz!! :D grato!! Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2007 No delphi tem componente específico para isto, na paleta Dialogs chamado OpenDialog, podendo fazer: if OpenDialog1.Execute then XlsToStringGrid(StringGrid1,OpenDialog1.FileName); Compartilhar este post Link para o post Compartilhar em outros sites
vitow 0 Denunciar post Postado Novembro 21, 2007 Marcio, perfeito brother!!! muito obrigado.. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif T+ http://forum.imasters.com.br/public/style_emoticons/default/bye1.gif Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Novembro 21, 2007 beleza... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
fabiospies2008 0 Denunciar post Postado Outubro 7, 2008 Tem duas formas eficientes de se fazer, uma é usando componentes, pode ser da paleta ADO, e outra acessando diretamente o Excel, podendo carregar tudo em um TStringGrid e trabalhar com os valores, qual das duas formas você acha que seria melhor para a sua situação ? Buenas. Como seria a segunda opção: "...uma é usando componentes, pode ser da paleta ADO..." Pois quero importar direto para meu banco de dados. Desde já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Vasconcelos 0 Denunciar post Postado Novembro 3, 2008 No delphi tem componente específico para isto, na paleta Dialogs chamado OpenDialog, podendo fazer: if OpenDialog1.Execute then XlsToStringGrid(StringGrid1,OpenDialog1.FileName); OLA MARCIO, CONSEGUI FAZER O PROCEDIMENTO E DEU CERTINHO. A DUVIDA AGORA É COMO FAÇO PRA GRAVAR DA STRINGGRID PARA MINHA TABELA DO BANCO. ABRAÇO E OBRIGADO Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Novembro 4, 2008 Basta usar um laço para varrer seu stringgrid e gravar os dados. Um exemplo é esta rotina que fiz para gravar os dados de um stringgrid usando uma Stored Procedure. Basta você adaptar para o seu caso. procedure TfrmImportaPlanilhaCamposGeradorConsulta.GravaTabelasBanco; var iIndice : Integer; begin with sgridTabelas do //StringGrid begin For iIndice := 1 to RowCount -1 do begin DM.ExecutaComando('STP_INSERE_TB_TABELAS_ANALISE ' + QuotedStr(Cells[0, iIndice]) + ',' + //Coluna 1 do StringGrid QuotedStr(Cells[1, iIndice]), DM.qryDBNegocio); //Coluna 2 do StringGrid end; end; end; Adaptando o código acima você consegue fazer o seu próprio. Qualquer coisa posta ai. []'s Compartilhar este post Link para o post Compartilhar em outros sites
MATEUS_ROCHA 0 Denunciar post Postado Fevereiro 10, 2009 olá Marcio, estou parado neste ponto....ja carreguei o arquivo .xls para o stringgrid.....o problema agora eh jogar para o banco, (USO FIREBIRD)...qual melhor maneira de fazer isso?? começando pela conexao do banco...obrigado Compartilhar este post Link para o post Compartilhar em outros sites
MATEUS_ROCHA 0 Denunciar post Postado Fevereiro 10, 2009 Qual seria o componente DM.EXECUTACOMANDO ??? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Fevereiro 10, 2009 Qual seria o componente DM.EXECUTACOMANDO ??? Provavelmente seja um Procedure ou Function no DataModule DM... Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Fevereiro 11, 2009 Qual seria o componente DM.EXECUTACOMANDO ??? Provavelmente seja um Procedure ou Function no DataModule DM... Exatamente isto Marcio, é uma função dentro do datamodule. Nela eu passo a sql e a query que irá executar a mesma no programa. []'s Compartilhar este post Link para o post Compartilhar em outros sites
valtino 0 Denunciar post Postado Março 23, 2010 Bom dia Respondendo as perguntas: 1. Uso o Delphi 7 2. O erro acontece na Execução, quando vai executar a linha: const xlCellTypeLastCell = $0000000B; Quando vai criar a constante: xlCellTypeLastCell 3. O Execell espa instalado, uso Windows XP. 4. VOu criar um topico novo. Aguardo Resp. Compartilhar este post Link para o post Compartilhar em outros sites
Nagash 0 Denunciar post Postado Maio 14, 2010 To com uma duvida parecida pessoal... assim.. só pra explicar.. eu NÃO programo em Delphi... só mexi com Delphi há uns 5 anos atrás na faculdade.. e mesmo assim só o básico do básico... aí entrei num emprego novo agora e meu chefe quer que eu faça uma "aplicaçãozinha" pra pegar uns dados que estejam num memo (ou grid) e salvar num arquivo do Excel. A versão final dessa aplicação será tipo assim: 1 - importar uma lista de matricula e nomes do banco de dados; 2 - mostra a lista na tela (num memo ou grid); 2.5 - dá a opção do usuário adicionar novos nomes E/OU matrículas na lista. 3 - salva num excel. A versão atual (para testes) seria importar do excel, mostrar os dados, permitir a adição manual de novos dados e posteriormente exportar para um outro arquivo do excel (com nome automatico usando yyyymmddhhnnss). será que alguém pode me dar uma ajuda pra fazer essa parte? nem que seja só salvar o conteúdo desse grid num novo xls? vlwws! Compartilhar este post Link para o post Compartilhar em outros sites
intelmib 0 Denunciar post Postado Setembro 27, 2011 Olá Pessoal. Me deparei com este erro. O método Activate da classe Range falhou' O Problema se encontra expecificamente em Plan1. Minha pergunta é: Existe alguma função que formate a Plan1? Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Outubro 21, 2011 Dá uma olhada neste Post... faz um bom tempo eu postei como fazer para gravar dados e gerar planilhas num arquivo excell, exportando dados de um dbgrid para uma planilha. E sugiro que crie sempre um post novo, não reabra posts já encerrados. Compartilhar este post Link para o post Compartilhar em outros sites