Neste artigo, iremos ver como criar um script PHP que faz o carregamento de um ficheiro Excel, para uma tabela criada com o Datatables, que é um plugin para o jQuery. Ele permite acrescentar uma enorme funcionalidade a qualquer tabela HTML, sendo muito flexível nas suas opções. Para fazer a leitura do ficheiro Excel, iremos utilizar a biblioteca PHPSpreadsheet, que permite ler e escrever ficheiros Excel em vários formatos. Para melhorar o aspecto da tabela iremos utilizar também os estilos da versão Bootstrap 4.
Instalação das bibliotecas
A instalação das bibliotecas em Javascript e das folhas de estilo (CSS) é mais ou menos linear, sendo somente necessário incluí-las nos respectivos lugares do código. Relativamente à biblioteca PHPSpreadsheet, ela deve ser instalada a partir do composer, de modo a que todos os ficheiros necessários ao seu funcionamento (dependências) sejam carregados. Para tal. deve ser executado o comando:
composer require phpoffice/phpspreadsheet
O código
Em seguida vamos escrever o código, do qual explicaremos em pormenor, as partes mais importantes.
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.css">
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.2/css/dataTables.bootstrap4.min.css">
</head>
<body>
<script src="https://code.jquery.com/jquery-3.5.1.js" ></script>
<script src="https://cdn.datatables.net/1.13.2/js/jquery.dataTables.min.js" ></script>
<script src="https://cdn.datatables.net/1.13.2/js/dataTables.bootstrap4.min.js" ></script>
<div class="container">
<div class="row">
<div class = "col-md-4"> </div>
<div class = "col-md-8">
<?php
// Incluir a biblioteca PHPSpreadsheet
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
// Carregar o ficheiro Excel
$spreadsheet = IOFactory::load("sampleData/SampleData.xlsx");
// Carregar a folha activa
$worksheet = $spreadsheet->getActiveSheet();
// Obter a linha limite e a coluna limite utilizadas na folha
$highestRow = $worksheet->getHighestRow();
$highestColumn = $worksheet->getHighestColumn();
// Converter a letra da coluna limite para uma número
$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highestColumn);
// Escrever cabeçalho da tabela
echo '<table id="example" class="table table-striped table-bordered" style="width:100%"><thead><tr>';
// Criar a o cabeçalho das colunas da tabela a parir da primeira linha do ficheiro Excel
for ($col = 1; $col <= $highestColumnIndex; $col++) {
$header = $worksheet->getCellByColumnAndRow($col, 1)->getValue();
echo '<th>' . $header . '</th>';
}
echo '</tr></thead><tbody>';
// Criar as linhas da tabela a partir das linhas de dados do ficheiro Excel
for ($row = 2; $row <= $highestRow; $row++) {
echo '<tr>';
// Aceder a cada coluna da linha e carregar com ela cada célula da tabela
for ($col = 1; $col <= $highestColumnIndex; $col++) {
$cellValue = $worksheet->getCellByColumnAndRow($col, $row)->getValue();
echo '<td>' . $cellValue . '</td>';
}
echo '</tr>';
}
echo '</tbody></table>';
?>
</div>
</div>
</div>
<script>
$(document).ready(function() {
$("#example").DataTable();
});
</script>
</body>
</html>
Explicação
linhas 4-5 : carregamento das folhas de estilos (CSS) do Bootstrap e do DataTables
linhas 8-10: carregamento das bibliotecas de Javascript, jQuery, DataTables e Bootstrap 4
linhas 12-15: criação da estrutura da página com base no Bootstrap 4
linhas 18-23: carregamento das bibliotecas do PHPSpreadsheet e leitura ficheiro Excel
linhas 25-33: carregamento da informação sobre a folha activa do ficheiro Excel
linhas 36-55: criação tabela HTML com a informação vinda do ficheiro
linhas 62-64: activação do DataTables, de modo a aumentar muito as possibilidades de manipulação dos dados na tabela
Download do ficheiro demo
Para fazer o download do ficheiro Excel, dê um clique aqui
![](https://i0.wp.com/bitsebytes.pt/wp-content/uploads/2023/03/CC-2018-970x90-1.png?ssl=1)