Чтение XLSX файла на PHP, используя PHPExcel.

27.01.2015
На примере простой задачи:
Есть эксельный файл (XLSX) со столбцами: Номер строки, ФИО, Пол, Номер и дата рождения. Нужно преобразовать все данные в объекты и выгрузить в формате JSON.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  // Настройки: где брать файл, куда выгружать и т.д.
  $sInFile = $sPath.'/in/in.xlsx';
  $sOutFile = $sPath.'/out/out.txt';
  $sPath = dirname(__FILE__);
  date_default_timezone_set('Europe/Moscow');

  // Подключаем библиотеку:
  require_once $sPath.'/xls/PHPExcel.php';
  $oExcel = PHPExcel_IOFactory::load($sInFile);

  // С какой линии начинаются данные
  $iStart = 2;

  $aRes = array();
  
  for ($i= $iStart; $i <= 1000; $i++)
  {
     $oRow = new stdClass();
       $oRow->id = 0;

       $Num =                    $oExcel->getActiveSheet()->getCell('A'.$i )->getValue(); // #
       $oRow->title =            $oExcel->getActiveSheet()->getCell('B'.$i )->getValue(); // Ф.И.О. члена ППО

       //Пропускаем строку, если столбец ФИО пуст
       if(!$oRow->title)
       {
         continue;
       }

       $oRow->sex =                $oExcel->getActiveSheet()->getCell('C'.$i )->getValue(); // Пол 
       $oRow->number =            $oExcel->getActiveSheet()->getCell('D'.$i )->getValue(); // № профсоюзного билета 
       $oRow->date_of_entry =    $oExcel->getActiveSheet()->getCell('E'.$i )->getValue(); // Дата вступления в ППО 

       // Преобразуем дату из MS формата в "обычный"
       $oRow->date_of_birth = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($oRow->date_of_birth));


     $aRes[] = $oRow;
  }


  file_put_contents($sOutFile, serialize($aRes));


Категории: PHP
Яндекс.Метрика