Чтение excel файла в PHP
При построении различных сервисов, иногда бывает необходимость прочитать xlsx документ и с данными, которые в нем содержатся что-то сделать, записать в базу, вывести на страницу или переформатировать и снова записать в файл, вариантов много. В предыдущей статье, был описан процесс создания excel документов при помощи php, почитать можно здесь В этой статье будет использоваться тот же пакет phpoffice/phpspreadsheet, для работы с документами excel.
Структура проекта
├── Файл index.php ├── Файл composer.json ├── Обрабатываемый файл xlsx
Шаг 1 — установка пакета phpoffice/phpspreadsheet
Данная статья написана, с учетом того, что composer у Вас установлен, поэтому переходим к созданию файла composer.json, его содержание:
{ "require": { "phpoffice/phpspreadsheet": "^1.18" } }
В этой же директории запускаем команду composer require
После успешного выполнения этой команды, произойдет установка необходимых пакетов, с зависимостями, структура немного изменится, будет такой:
├── Файл index.php ├── Файл composer.json ├── Файл composer.lock ├── Обрабатываемый файл xlsx ├── Директория vendor └── Директории с файлами пакетов
Файл xlsx у меня с таким содержимым:
В самом простом примере прочитаем файл xlsx в массив и выведем функцией print_r, для этого необходимо написать index.php, код будет такой:
<?php set_include_path(__DIR__); require './vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; $inputFileName = __DIR__ . '/file32342.xlsx'; $reader = new Xlsx(); $spreadsheet = $reader->load($inputFileName); $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true); echo '<pre>'; print_r($sheetData); echo '</pre>';
В результате выполнения этого кода, увидим вот такой распечатанный массив:
Array ( [1] => Array ( [A] => Значение А1 [B] => Значение В1 [C] => Значение С1 [D] => Значение D1 [E] => Значение E1 [F] => Значение F1 [G] => Значение G1 [H] => Значение H1 [I] => Значение I1 [J] => Значение J1 [K] => Значение K1 [L] => Значение L1 [M] => Значение M1 ) [2] => Array ( [A] => Значение А2 [B] => Значение В2 [C] => Значение С2 [D] => Значение D2 [E] => Значение E2 [F] => Значение F2 [G] => Значение G2 [H] => Значение H2 [I] => Значение I2 [J] => Значение J2 [K] => Значение K2 [L] => Значение L2 [M] => Значение M2 ) [3] => Array ( [A] => Значение А3 [B] => Значение В3 [C] => Значение С3 [D] => Значение D3 [E] => Значение E3 [F] => Значение F3 [G] => Значение G3 [H] => Значение H3 [I] => Значение I3 [J] => Значение J3 [K] => Значение K3 [L] => Значение L3 [M] => Значение M3 ) [4] => Array ( [A] => Значение А4 [B] => Значение В4 [C] => Значение С4 [D] => Значение D4 [E] => Значение E4 [F] => Значение F4 [G] => Значение G4 [H] => Значение H4 [I] => Значение I4 [J] => Значение J4 [K] => Значение K4 [L] => Значение L4 [M] => Значение M4 ) [5] => Array ( [A] => Значение А5 [B] => Значение В5 [C] => Значение С5 [D] => Значение D5 [E] => Значение E5 [F] => Значение F5 [G] => Значение G5 [H] => Значение H5 [I] => Значение I5 [J] => Значение J5 [K] => Значение K5 [L] => Значение L5 [M] => Значение M5 ) [6] => Array ( [A] => Значение А6 [B] => Значение В6 [C] => Значение С6 [D] => Значение D6 [E] => Значение E6 [F] => Значение F6 [G] => Значение G6 [H] => Значение H6 [I] => Значение I6 [J] => Значение J6 [K] => Значение K6 [L] => Значение L6 [M] => Значение M6 ) [7] => Array ( [A] => Значение А7 [B] => Значение В7 [C] => Значение С7 [D] => Значение D7 [E] => Значение E7 [F] => Значение F7 [G] => Значение G7 [H] => Значение H7 [I] => Значение I7 [J] => Значение J7 [K] => Значение K7 [L] => Значение L7 [M] => Значение M7 ) [8] => Array ( [A] => Значение А8 [B] => Значение В8 [C] => Значение С8 [D] => Значение D8 [E] => Значение E8 [F] => Значение F8 [G] => Значение G8 [H] => Значение H8 [I] => Значение I8 [J] => Значение J8 [K] => Значение K8 [L] => Значение L8 [M] => Значение M8 ) [9] => Array ( [A] => Значение А9 [B] => Значение В9 [C] => Значение С9 [D] => Значение D9 [E] => Значение E9 [F] => Значение F9 [G] => Значение G9 [H] => Значение H9 [I] => Значение I9 [J] => Значение J9 [K] => Значение K9 [L] => Значение L9 [M] => Значение M9 ) [10] => Array ( [A] => Значение А10 [B] => Значение В10 [C] => Значение С10 [D] => Значение D10 [E] => Значение E10 [F] => Значение F10 [G] => Значение G10 [H] => Значение H10 [I] => Значение I10 [J] => Значение J10 [K] => Значение K10 [L] => Значение L10 [M] => Значение M10 ) [11] => Array ( [A] => Значение А11 [B] => Значение В11 [C] => Значение С11 [D] => Значение D11 [E] => Значение E11 [F] => Значение F11 [G] => Значение G11 [H] => Значение H11 [I] => Значение I11 [J] => Значение J11 [K] => Значение K11 [L] => Значение L11 [M] => Значение M11 ) [12] => Array ( [A] => Значение А12 [B] => Значение В12 [C] => Значение С12 [D] => Значение D12 [E] => Значение E12 [F] => Значение F12 [G] => Значение G12 [H] => Значение H12 [I] => Значение I12 [J] => Значение J12 [K] => Значение K12 [L] => Значение L12 [M] => Значение M12 ) [13] => Array ( [A] => Значение А13 [B] => Значение В13 [C] => Значение С13 [D] => Значение D13 [E] => Значение E13 [F] => Значение F13 [G] => Значение G13 [H] => Значение H13 [I] => Значение I13 [J] => Значение J13 [K] => Значение K13 [L] => Значение L13 [M] => Значение M13 ) [14] => Array ( [A] => Значение А14 [B] => Значение В14 [C] => Значение С14 [D] => Значение D14 [E] => Значение E14 [F] => Значение F14 [G] => Значение G14 [H] => Значение H14 [I] => Значение I14 [J] => Значение J14 [K] => Значение K14 [L] => Значение L14 [M] => Значение M14 ) [15] => Array ( [A] => Значение А15 [B] => Значение В15 [C] => Значение С15 [D] => Значение D15 [E] => Значение E15 [F] => Значение F15 [G] => Значение G15 [H] => Значение H15 [I] => Значение I15 [J] => Значение J15 [K] => Значение K15 [L] => Значение L15 [M] => Значение M15 ) [16] => Array ( [A] => Значение А16 [B] => Значение В16 [C] => Значение С16 [D] => Значение D16 [E] => Значение E16 [F] => Значение F16 [G] => Значение G16 [H] => Значение H16 [I] => Значение I16 [J] => Значение J16 [K] => Значение K16 [L] => Значение L16 [M] => Значение M16 ) [17] => Array ( [A] => Значение А17 [B] => Значение В17 [C] => Значение С17 [D] => Значение D17 [E] => Значение E17 [F] => Значение F17 [G] => Значение G17 [H] => Значение H17 [I] => Значение I17 [J] => Значение J17 [K] => Значение K17 [L] => Значение L17 [M] => Значение M17 ) [18] => Array ( [A] => Значение А18 [B] => Значение В18 [C] => Значение С18 [D] => Значение D18 [E] => Значение E18 [F] => Значение F18 [G] => Значение G18 [H] => Значение H18 [I] => Значение I18 [J] => Значение J18 [K] => Значение K18 [L] => Значение L18 [M] => Значение M18 ) [19] => Array ( [A] => Значение А19 [B] => Значение В19 [C] => Значение С19 [D] => Значение D19 [E] => Значение E19 [F] => Значение F19 [G] => Значение G19 [H] => Значение H19 [I] => Значение I19 [J] => Значение J19 [K] => Значение K19 [L] => Значение L19 [M] => Значение M19 ) [20] => Array ( [A] => Значение А20 [B] => Значение В20 [C] => Значение С20 [D] => Значение D20 [E] => Значение E20 [F] => Значение F20 [G] => Значение G20 [H] => Значение H20 [I] => Значение I20 [J] => Значение J20 [K] => Значение K20 [L] => Значение L20 [M] => Значение M20 ) [21] => Array ( [A] => Значение А21 [B] => Значение В21 [C] => Значение С21 [D] => Значение D21 [E] => Значение E21 [F] => Значение F21 [G] => Значение G21 [H] => Значение H21 [I] => Значение I21 [J] => Значение J21 [K] => Значение K21 [L] => Значение L21 [M] => Значение M21 ) [22] => Array ( [A] => Значение А22 [B] => Значение В22 [C] => Значение С22 [D] => Значение D22 [E] => Значение E22 [F] => Значение F22 [G] => Значение G22 [H] => Значение H22 [I] => Значение I22 [J] => Значение J22 [K] => Значение K22 [L] => Значение L22 [M] => Значение M22 ) [23] => Array ( [A] => Значение А23 [B] => Значение В23 [C] => Значение С23 [D] => Значение D23 [E] => Значение E23 [F] => Значение F23 [G] => Значение G23 [H] => Значение H23 [I] => Значение I23 [J] => Значение J23 [K] => Значение K23 [L] => Значение L23 [M] => Значение M23 ) [24] => Array ( [A] => Значение А24 [B] => Значение В24 [C] => Значение С24 [D] => Значение D24 [E] => Значение E24 [F] => Значение F24 [G] => Значение G24 [H] => Значение H24 [I] => Значение I24 [J] => Значение J24 [K] => Значение K24 [L] => Значение L24 [M] => Значение M24 ) [25] => Array ( [A] => Значение А25 [B] => Значение В25 [C] => Значение С25 [D] => Значение D25 [E] => Значение E25 [F] => Значение F25 [G] => Значение G25 [H] => Значение H25 [I] => Значение I25 [J] => Значение J25 [K] => Значение K25 [L] => Значение L25 [M] => Значение M25 ) [26] => Array ( [A] => Значение А26 [B] => Значение В26 [C] => Значение С26 [D] => Значение D26 [E] => Значение E26 [F] => Значение F26 [G] => Значение G26 [H] => Значение H26 [I] => Значение I26 [J] => Значение J26 [K] => Значение K26 [L] => Значение L26 [M] => Значение M26 ) [27] => Array ( [A] => Значение А27 [B] => Значение В27 [C] => Значение С27 [D] => Значение D27 [E] => Значение E27 [F] => Значение F27 [G] => Значение G27 [H] => Значение H27 [I] => Значение I27 [J] => Значение J27 [K] => Значение K27 [L] => Значение L27 [M] => Значение M27 ) [28] => Array ( [A] => Значение А28 [B] => Значение В28 [C] => Значение С28 [D] => Значение D28 [E] => Значение E28 [F] => Значение F28 [G] => Значение G28 [H] => Значение H28 [I] => Значение I28 [J] => Значение J28 [K] => Значение K28 [L] => Значение L28 [M] => Значение M28 ) [29] => Array ( [A] => Значение А29 [B] => Значение В29 [C] => Значение С29 [D] => Значение D29 [E] => Значение E29 [F] => Значение F29 [G] => Значение G29 [H] => Значение H29 [I] => Значение I29 [J] => Значение J29 [K] => Значение K29 [L] => Значение L29 [M] => Значение M29 ) [30] => Array ( [A] => Значение А30 [B] => Значение В30 [C] => Значение С30 [D] => Значение D30 [E] => Значение E30 [F] => Значение F30 [G] => Значение G30 [H] => Значение H30 [I] => Значение I30 [J] => Значение J30 [K] => Значение K30 [L] => Значение L30 [M] => Значение M30 ) )
В итоге все достаточно просто, каждая линия будет соответствовать номеру многомерного массива, где именами ключей будут выступать колонки их excel файла.