(Parte 2) Importando planilhas do Excel para o MySQL usando PHP com PDO

importacao2Vamos dar continuidade na segunda parte do artigo para importação de planilhas do excel para o MySQL usando PHP, no primeiro artigo foi demonstrado a classe abstrata que vai servir como base para classe especifica que será exibida neste artigo.

 

Abaixo segue o script das 2 tabelas (TAB_IMPORTACAO, TAB_GASTO) para o banco de dados DB_BLOG:

 
Para esse exemplo criei uma planilha com o nome gastos.xls com os mesmos campos da tabela TAB_GASTO e na mesma disposição(ordem). Gravei na pasta planilhas que está no diretório raiz da aplicação, segue imagem da planilha.
 
 
 

Abaixo segue a classe específica para importar os dados da tabela planilha gastos.xls, essa classe descende da classe importacaoBase.class.php postada na primeira parte desse artigo. Nesse caso estamos reaproveitando todos os métodos e atributos declarados como private e public na classe importacaoBase.class.php além disso serão implementados os métodos abstratos na classe específica.

importacaoGasto.class.php

Na classe acima existe uma constante $qtde_colunas, ela deve guardar a quantidade de colunas existente na planilha gastos.xls para que seja comparado esse valor com a quantidade de colunas retornada pelo método getColunas(). Essa comparação é importante para não haver discrepância no momento da importação, por isso essa verificação é feita no construtor da classe e se houver erro é finalizado o script com uma mensagem e o comando exit.
 
Além do construtor existem mais 3 métodos nessa classe:
 
  • getDados(): Método serve para exibir os dados da planilha no navegador, essa prática auxilia para visualizar a formatação dos dados que serão inseridos na tabela, principalmente valores monetários.
  • insertDados(): Método que realmente inseri os dados no banco de dados através de um loop, observem que antes de inserir limpo totalmente a tabela chamando o método $this->limpaTabela(), caso não seja necessário pode ser retirar esse método. Outro ponto importante é na preparação da instrução SQL, notem que a mesma é preparada apenas uma vez e posteriormente os valores são passados via parâmetro dentro do loop, isso aumenta a performance do script. Imaginem planilhas com mais de 1000 registros preparando instruções SQL na mesma quantidade.
  • verificaOp(): Método tem a função de verificar se quantidade de registros inseridas é a mesma que a quantidade de linhas na planilha, após a verificações esse método chama o método insertLog() para inserir os dados de SUCESSO ou ERRO na tabela TAB_IMPORTACAO, para esse exemplo estou passando como parâmetro $user o meu nome, mas esse valor pode vir de uma $_SESSION contendo o usuário logado. Um detalhe importante é que a tabela TAB_IMPORTACAO tem utilidade para o programador ou analista de sistema da empresa, pois as mensagens de erro que serão gravadas não são das mais bonitas e  intuitivas.
 

Agora vamos aos testes, inicialmente vamos exibir os dados da planilha no navegador.

 
index.php

Resultado no navegador:

 
 
Agora vamos testar a inserção dos dados no banco de dados chamando o método insertDados():
 

index.php

Mensagem de retorno confirmando o sucesso da importação:

 
Como a mensagem indica sucesso na importação, segue abaixo imagem do dados na tabela TAB_GASTO:
 
 
Para  finalizar segue imagem da tabela TAB_IMPORTACAO, para ilustrar melhor essa tabela  contém registros de importações anteriores:
 
 
Bom pessoal chegamos ao final dessa série de 2 artigos, espero que os exemplos compartilhados aqui possam ser de grande valia. Essas classes podem ser customizadas e infinitamente melhoradas, elas foram construídas de acordo com  a necessidade do meu cliente mas cada caso é um caso.
 
Até a próxima …
 
link: 1º Parte
Post relacionado:  10 pegadinhas PHP escondidas na linguagem
Tags:,
Show Buttons
Hide Buttons