Importar planilhas do Excel com PHP

Importar planilhas do Excel com PHPO tema de hoje é como importar planilhas do Excel com PHP gravando em um banco de dados no MySQL, algum tempo atrás escrevi 2 posts com tema parecido porém com algumas limitações.

Só era possível importar planilhas com a extensão xls, nos dias atuais o excel gera planilhas com a extensão xlsx, nesse caso vou atualizar o conteúdo adaptado para essa extensão.

Outros posts sobre PHP que podem interessar:

Parte 1 – Importando planilhas do Excel (.xls) para o MySQL usando PHP com PDO

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

10 pegadinhas PHP escondidas na linguagem

 

O segredo para se trabalhar com importações de arquivos independente da extensão é conhecer a estrutura desse arquivo, ou seja, em que ordem estão dispostas as colunas que serão importadas. Nesse post vamos simular a importação de uma planilha contendo cadastros de clientes com alguns campos básicos, a ideia é ler essas linhas e inserir em uma tabela cliente no MySQL.

Layout e dados da planilha

Layout planilha do Excel

Observem que as colunas possuem títulos, essa primeira linha terá que ser descartada no momento da importação, outro ponto importante é o código do cliente que possui “0” a esquerda do número então o campo que vai receber esse valor na tabela tem que ser do tipo VARCHAR, campos com data type INT não aceitam zeros a esquerda.

Observação: A extensão xlsx é gerada a partir de planilhas gravadas pela ferramenta Microsoft Excel, nesse exemplo abri uma planilha com a ferramenta LibreOffice Calc pois estou trabalhando com Ubuntu.

Criando o banco de dados e a tabela cliente no MySQL

 

Script PHP para importar planilhas

Um pré-requisito para conseguirmos escrever essa importação é a utilização de uma classe PHP que não é de minha autoria mas o leitor deve baixar o arquivo SimpleXLSX.class.php, essa classe possui todos os métodos necessários para leitura de planilhas do excel com a extensão xlsx.

Vamos apenas escrever outra classe “ImportaPlanilha” mas simples que vai funcionar como um “wrapper” dos métodos para ler os valores das células e utilizando uma conexão PDO vamos criar outro método que vai servir para gravar os valores no banco de dados, desse modo conseguimos importar planilhas com PHP.

Observações sobre os principais métodos da classe “ImportaPlanilha“:

Post relacionado:  PDO - conexão seguindo padrão Singleton no PHP

1 – No método construtor recebo e executo uma validação básica dos 2 parâmetros $path e $conexao, instancio um objeto da classe SimpleXLSX, logo abaixo chamo o método dimension() que pertence a classe SimpleXLSX e capturo o retorno desse método atribuindo os valores de $linha e $coluna, com isso já temos  quantidade de linhas e colunas da planilha passada como parâmetro.

 

2 – Esse método tem como objetivo verificar se o CPF passado como parâmetro já existe na tabela, se existir ele retorna TRUE senão é retornado FALSE, com esse método conseguimos impedir que sejam duplicados dados na tabela cliente usando como parâmetro o valor do CPF.

 

3 – Para finalizar temos o método que realmente importa os dados da planilha para o banco de dados, observem que utilizamos o objeto SimpleXLSX que está no atributo $planilha para percorrer as linhas e as colunas da planilha, a leitura dos valores é feita passando um índice. Antes de inserir verifico se a linha que está sendo lida é a primeira, nesse caso sabemos que essa linha contém apenas os títulos das colunas então não serão inseridos esses valores e também chamamos o método “isRegistroDuplicado()” para verificar se o CPF já foi cadastrado.

Post relacionado:  5 itens iniciais para configurar no CodeIgniter 3

 

Importando dados da Planilha

Abaixo temos um exemplo de como usar a classe “ImportaPlanilha.class.php” para importar planilhas, observem que estou configurando uma conexão PDO para ser passada como parâmetro no momento que instanciarmos a classe, além do caminho e nome da planilha xlsx que nesse exemplo esta no mesmo diretório que os scripts.

 

Se tudo correr bem após executar o script acima no navegador, devemos obter o resultado como exibido na imagem abaixo, onde temos a quantidade de linhas e colunas existentes na planilha, quantidade de registros que foi importada para o banco de dados.

Resultado Importação Excel

Ao executarmos novamente esse script, a quantidade de registros importada será “0” zero, pois estamos verificando no momento do INSERT se o CPF do cliente já está gravado na tabela, nesse caso nenhum registro será inserido.

 

Abaixo segue imagem com dados que foram importados da planinha após uma consulta no MySQL Workbench:

Dados importados da planilha

 

Bom pessoal nesse post demonstrei como importar planilhas do Excel com a extensão xlsx, como sempre escrevo nos posts sobre os meus exemplos, eles podem ser infinitamente melhorados com adição de outros métodos conforme a necessidade, a ideia é sempre mostrar que existe como fazer e dar um caminho para leitor.

Já precisei dessa funcionalidade em sistema onde era necessário importar planilhas do Excel extraídas de um sistema ERP para outro sistema gerador de gráficos e funcionou muito bem com grande volumes de dados.

Se você gostou desse post compartilhe nas redes sociais abaixo, até a próxima.

Tags:
Show Buttons
Hide Buttons