Работа с XLSX через обновленную библиотеку (phpoffice/phpspreadsheet)

11.06.2018 21:59:37

Примеры работы с файлами эксель (excel) используя библиотеку phpspreadsheet

Общее

Примеры работы со строй версией библиотеки: Работа с XLSX ("новый" Эксель)

Страница самого проекта на packagist: phpoffice/phpspreadsheet

Важно: требуется PHP 5.6 и выше.

Установка

Для начала нужно устанавливать composer

Затем проинструктировать пакет через консоль:

 
composer require phpoffice/phpspreadsheet

Хороший набор примеров присутствует в директории /vendor/phpoffice/phpspreadsheet/samples/Basic/

Документация по API

Примеры:

Создание и запись в файл

Create_and_Write.php (Download)

 <?php

  error_reporting(E_ALL);
  ini_set('display_errors', 'On');
  require_once('vendor/autoload.php');

  //use PhpOffice\PhpSpreadsheet\Helper\Sample;
  use PhpOffice\PhpSpreadsheet\IOFactory;
  use PhpOffice\PhpSpreadsheet\Spreadsheet;

  $sOutFile = 'out.xlsx';

  $oSpreadsheet_Out = new Spreadsheet();

  $oSpreadsheet_Out->getProperties()->setCreator('Maarten Balliauw')
    ->setLastModifiedBy('Maarten Balliauw')
    ->setTitle('Office 2007 XLSX Test Document')
    ->setSubject('Office 2007 XLSX Test Document')
    ->setDescription('Test document for Office 2007 XLSX, generated using PHP classes.')
    ->setKeywords('office 2007 openxml php')
    ->setCategory('Test result file')
  ;
  
  // Add some data
  $oSpreadsheet_Out->setActiveSheetIndex(0)
    ->setCellValue('A1', 'Привет 123')
    ->setCellValue('B2', 'world!')
    ->setCellValue('C1', 'Hello')
    ->setCellValue('D2', 'world!')
  ;

  $oWriter = IOFactory::createWriter($oSpreadsheet_Out, 'Xlsx');
  $oWriter->save($sOutFile);
  //$oWriter->save('php://output');

Чтение данных

Read.php (Download)

 <?php

  error_reporting(E_ALL);
  ini_set('display_errors', 'On');
  require_once('vendor/autoload.php');

  use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
  use PhpOffice\PhpSpreadsheet\IOFactory;
 

  $sFile = 'in.xlsx';
  $oReader = new Xlsx();
  //$oReader = IOFactory::createReaderForFile($sFile);
 
  // Если вы хотите установить строки и столбцы, которые необходимо читать, создайте класс ReadFilter
  //$oReader->setReadFilter( new MyReadFilter(11, 1000, range('B', 'O')) );

  $oSpreadsheet = $oReader->load($sFile);

  $oCells = $oSpreadsheet->getActiveSheet()->getCellCollection();

  for ($iRow = 1; $iRow <= $oCells->getHighestRow(); $iRow++)
  {
    for ($iCol = 'A'; $iCol <= 'C'; $iCol++)
    {
      $oCell = $oCells->get($iCol.$iRow);
      if($oCell)
      {
        echo $oCell->getValue() . '<br />';
      }
    }
    echo  '<hr />';
  }  

Ошибки:

Сообщение Warning: ZipArchive::getFromName(): Invalid or uninitialized Zip object in возникает, если попробовать открыть XLS файл, через new xlsX();


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