Как открыть Excel файл с помощью PHP
Для открытия Excel файлов с помощью PHP существуют несколько библиотек.
Одна из них называется PHPExcel.
Инструмент с достаточно большим функционалом, можно читать, редактировать и создавать Excel документы.
Причем можно выбрать конкретный лист для чтения в документе.
Но существуют и недостатки данного решения - при работе с большими файлами можно положить сервер.
В интернете предлагается несколько решений данной проблемы, но лучше выбрать другой способ, каких в принципе не так мало.
Однако, для файлов небольшого размера библиотеки PHPExcel более чем достаточно.
Скачать и найти документацию можно на официальном сайте.
Минимально необходимый код для открытия документа и чтения его ячеек:
Для удобства, вместо предыдущего кода, можно использовать данную функцию, на выходе получаем массив:
Предупреждение:
С некоторыми файлами работает некорректно, отказывается их открывать, выдает белый экран.
Скорей всего, связано это с тем, что структура файлов повреждена, такое может быть если файл создан в MacOS.
Более подробную документацию на русском можно найти здесь.
Одна из них называется PHPExcel.
Инструмент с достаточно большим функционалом, можно читать, редактировать и создавать Excel документы.
Причем можно выбрать конкретный лист для чтения в документе.
Но существуют и недостатки данного решения - при работе с большими файлами можно положить сервер.
В интернете предлагается несколько решений данной проблемы, но лучше выбрать другой способ, каких в принципе не так мало.
Однако, для файлов небольшого размера библиотеки PHPExcel более чем достаточно.
Скачать и найти документацию можно на официальном сайте.
Минимально необходимый код для открытия документа и чтения его ячеек:
// подключаем один из классов библиотеки
include_once 'PHPExcel/IOFactory.php';
// загружаем документ excel.xls
$objPHPExcel = PHPExcel_IOFactory::load("excel.xls");
// выбираем активный лист для работы (начинаются с нуля)
$objPHPExcel->setActiveSheetIndex(0);
$aSheet = $objPHPExcel->getActiveSheet();
echo '<table cellpadding="0" cellspacing="0">';
// получаем итератор строки и проходим по нему циклом
foreach($aSheet->getRowIterator() as $row){
echo "<tr>";
// получаем итератор ячеек текущей строки
$cellIterator = $row->getCellIterator();
// проходим циклом по ячейкам строки
foreach($cellIterator as $cell){
// выводим значения
echo "<td>".$cell->getCalculatedValue()."</td>";
}
echo "</tr>";
}
echo '</table>';
Для удобства, вместо предыдущего кода, можно использовать данную функцию, на выходе получаем массив:
//Функция принимает имя xls файла, считывает его, занося данные ячеек строк в массив, и возвращает этот массыв как результат
function getXLS($xls){
include_once 'Classes/PHPExcel/IOFactory.php';
$objPHPExcel = PHPExcel_IOFactory::load($xls);
$objPHPExcel->setActiveSheetIndex(0);
$aSheet = $objPHPExcel->getActiveSheet();
$array = array(); //этот массив будет содержать массивы содержащие в себе значения ячеек каждой строки
$array_articles = array();
//получим итератор строки и пройдемся по нему циклом
foreach($aSheet->getRowIterator() as $row){
//получим итератор ячеек текущей строки
$cellIterator = $row->getCellIterator();
//пройдемся циклом по ячейкам строки
$item = array();//этот массив будет содержать значения каждой отдельной строки
$i = 0;
foreach($cellIterator as $cell){
$i++;
if($i == 1)
{
$array_articles[] = $cell->getCalculatedValue();
}
//заносим значения ячеек одной строки в отдельный массив
array_push($item, $cell->getCalculatedValue());
}
//заносим массив со значениями ячеек отдельной строки в "общий массв строк"
array_push($array, $item);
}
return array($array,$array_articles);
}
// вызов функции
$xls_url = 'name.xls';
$xlsData = getXLS($_SERVER["DOCUMENT_ROOT"].$xls_url); // извлеаем данные из XLS, подставляем полный путь до документа
// обработка полученного массива в цикле
foreach($xlsData[0] as $key=>$value)
{
echo $value[0].' / '.$value[1].'<br>';
}
Предупреждение:
С некоторыми файлами работает некорректно, отказывается их открывать, выдает белый экран.
Скорей всего, связано это с тем, что структура файлов повреждена, такое может быть если файл создан в MacOS.
Более подробную документацию на русском можно найти здесь.