Я хочу прочитать данные из файла Excel на PHP, чтобы я мог обработать данные и вставить их в БД.
Оглядываясь на SO, похоже, что PHPExcel — лучшая библиотека для этой задачи.
Я зашел на страницу PHPExcel GitHub (https://github.com/PHPOffice/PHPExcel), но я не могу понять, как на самом деле использовать библиотеку. Есть тонна примеров файлов, и ни один из тех, на которые я смотрел, кажется, не соответствует простому варианту использования, который я ищу.
Более того, я даже не могу понять, какие файлы со страницы GitHub мне даже нужно загрузить и какова должна быть структура папок для включаемых файлов.
Таким образом, учитывая то, как теперь структурирована страница GitHub, ссылка на которую приведена выше (для v1.8), какие файлы мне нужно загружать, и что представляет собой простой пример кода, который позволяет мне указать путь к файлу Excel и прочитать данные из файла?
Марк Бейкер был чрезвычайно полезен, помогая мне найти правильный ответ. Я не использую Composer с PHP (я, вероятно, должен учиться), но, учитывая это, чтобы заставить это работать, я перешел на страницу GitHub для PHPExcel (https://github.com/PHPOffice/PHPExcel), нажал зеленый Клонируй и скачай кнопку, а затем Скачать ZIP ссылка на сайт.
После распаковки файла я получил папку с именем PHPExcel-1.8
, Я переместил эту папку в ту же папку, что и оба файла Excel, которые я хотел прочитать (в моем коде ниже test.xlsx
) и файл PHP с кодом ниже.
Ключ к тому, чтобы заставить его работать, вводил правильный путь к IOFactory.php
файл. Некоторым это может показаться простым, но это сбило меня с толку.
Учитывая вышесказанное и комментарии Марка Бейкера, следующий код отлично сработал для меня (обратите внимание на комментируемые части):
<?php
//Had to change this path to point to IOFactory.php.
//Do not change the contents of the PHPExcel-1.8 folder at all.
include('PHPExcel-1.8/Classes/PHPExcel/IOFactory.php');
//Use whatever path to an Excel file you need.
$inputFileName = 'test.xlsx';
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch (Exception $e) {
die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME) . '": ' .
$e->getMessage());
}
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
for ($row = 1; $row <= $highestRow; $row++) {
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
null, true, false);
//Prints out data in each row.
//Replace this with whatever you want to do with the data.
echo '<pre>';
print_r($rowData);
echo '</pre>';
}
Других решений пока нет …