Операційні системи Windows продовжують бути популярними і по сей день, як наслідок це впливає на всі галузі стосуються персональних комп’ютерів, розробка та веб не стала винятком. Продукт Microsoft Office включає в себе безліч корисних програм, однією з яких є Excel. Excel дозволяє працювати з електронними таблицями, які успішно використовуються для економічно-статистичних розрахунків безліччю людей на планеті.

Іноді виникає необхідність реалізації взаємодії файлів Excel з веб-додатками, наприклад, необхідно імпортувати дані з таблиці документа, або навпаки, створити документ з певним набором даних. Поговоримо про те, як можна організувати взаємодію без великих тимчасових витрат. Відразу варто зауважити, що PHP в стандартній своїй комплектації не має спеціальних функцій для взаємодії з файлами Excel. Однак це не є серйозною проблемою, обійтися без якої цілком можна.

Існує проект, його учасники створили PHP-бібліотеку, яка спрощує роботу з файлами Excel. Бібліотека називається PHPExcel, вона має GNU ліцензію і перебувати у відкритому доступі. Розглянемо приклад використання цієї бібліотеки.
Попередньо необхідно завантажити архів з файлами. На даний момент, я скачав архів PHPExcel_1.7.9_doc.zip. В архіві міститься файли бібліотеки, документація та приклади використання.

Зі всім цим ви зможете ознайомитися самостійно, ми ж перейдемо до самого прикладу. Спробуємо сформувати Excel файл.

В архіві буде папка Classes, це і є безпосередні файли бібліотеки, які нам потрібні. Копіюємо вміст папки в директорію вашого проекту, туди, де ви зберігаєте всі бібліотеки, якщо такої немає – створіть самостійно. Основний файл бібліотеки, який слід підключити, називається PHPExcel.php він знаходиться безпосередньо в корені папки Classes.

Підключаємо бібліотеку в скрипті, перед її використанням.

require_once (‘/library/PHPExcel.php’);

Створюємо об’єкт:

$objPHPExcel = new PHPExcel();

Задаємо інформацію про створюваний файл:

$objPHPExcel->getProperties()->setCreator(“Rustam Atashev”)
->setLastModifiedBy(“Rustam Atashev”)
->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(“example file”);

Тепер час задавати дані комірок:

$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(‘A1’, ‘Код’)
->setCellValue(‘B1’, ‘Ім’я’)
->setCellValue(‘C1’, ‘Місто’);

Наступна рядок задається таким же чином, варто лише звернути увагу на номери комірок, для другого рядка вони будуть A2, B2, C2.

Задаємо ім’я таблиці:

$objPHPExcel->getActiveSheet()->setTitle(‘Довідник’);

Зберігаємо файл:

$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
$objWriter->save(‘Example.xlsx’);

У підсумку отримуємо файл з ім’ям Example.xlsx, вміст якого відповідає тому, що ми поставили.

Крім того, є можливість більш гнучко використовувати цю бібліотеку для роботи з різними параметрами таблиці. З цих питань рекомендується звертатися до документації. Бібліотека PHPExcel так само вміє працювати з іншими типами файлів, таких як Excel (BIFF). XLS, Excel 2007 (OfficeOpenXML). XLSX, CSV, Libre / OpenOffice Calc. ODS, Gnumeric, PDF, HTML, проект в цілому побудований навколо OpenXML Microsoft, і PHP.

UPD:
Так само рекомендую до прочитання: PHPExcel: форматування комірок.

Додав: htmaker, 12.01.2014 р.
(Ще не оцінили)

Завантаження…

Діліться з друзями:

См. також:


Пісочниця для PHP
Рубрика: PHP, Інструменти

Конфіг файли
Рубрика: PHP

Установка XCache в Linux CentOS
Рубрика: Linux, PHP

Використання SOAP в PHP
Рубрика: PHP

Встановлення PHP Soap на CentOS
Рубрика: Linux, PHP

Обсяг даних в зручному форматі на PHP
Рубрика: PHP

Транслітерація символів на PHP
Рубрика: PHP

Як перетворити URL-рядок в масив?
Рубрика: PHP

Добірка шаблонів регулярних виразів
Рубрика: PHP

Коментарі

  • Okta пише:
    03.02.2014 в 14:55

    Супер, дякую, саме цього мені і не вистачало, CSV не відповідає багатьом вимогам.

    Відповісти

  • incom пише:
    21.01.2015 у 17:01

    Чи можна створити файл Excel c згрупувати рядками ( + і — ) ? Якщо можна, напишіть невеликі приклади. Заздалегідь дякую!

    Відповісти

  • htmaker пише:
    22.01.2015 в 00:58

    Можна,

    $objPHPExcel = new PHPExcel();

    // щоб плюсики були з верху
    $objPHPExcel->getActiveSheet()->setShowSummaryBelow(false);

    // осередок перша, коренева
    $objPHPExcel->getActiveSheet()->setCellValue(‘A1’, “test1”);
    $objPHPExcel->getActiveSheet()->getRowDimension(1)->setOutlineLevel(0);
    $objPHPExcel->getActiveSheet()->getRowDimension(1)->setVisible(true);
    $objPHPExcel->getActiveSheet()->getRowDimension(1)->setCollapsed(false);

    // осередок друга
    $objPHPExcel->getActiveSheet()->setCellValue(‘A2’, “test2”);
    // вказуємо кореневу клітинку – 1
    $objPHPExcel->getActiveSheet()->getRowDimension(2)->setOutlineLevel(1);
    $objPHPExcel->getActiveSheet()->getRowDimension(2)->setVisible(true);
    $objPHPExcel->getActiveSheet()->getRowDimension(2)->setCollapsed(false);

    // комірка 3
    $objPHPExcel->getActiveSheet()->setCellValue(‘A3’, “test3”);
    // вказуємо кореневу клітинку – 1
    $objPHPExcel->getActiveSheet()->getRowDimension(3)->setOutlineLevel(1);
    $objPHPExcel->getActiveSheet()->getRowDimension(3)->setVisible(true);
    $objPHPExcel->getActiveSheet()->getRowDimension(3)->setCollapsed(false);

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
    $objWriter->save(‘file2.xlsx’);

    Ось це справа вкладеннями в кілька рівнів:

    $i=2;
    while($i<1000)
    {

    $objPHPExcel->getActiveSheet()->setCellValue(‘A’ . $i, “test”.$i);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setOutlineLevel(1);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setVisible(true);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setCollapsed(false);
    $i++;

    for($j=0;$j<5;$j++)
    {
    $objPHPExcel->getActiveSheet()->setCellValue(‘A’ . $i, “test”.$i);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setOutlineLevel(2);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setVisible(true);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setCollapsed(false);
    $i++;

    for($k=0;$k<5;$k++)
    {
    $objPHPExcel->getActiveSheet()->setCellValue(‘A’ . $i, “test”.$i);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setOutlineLevel(3);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setVisible(true);
    $objPHPExcel->getActiveSheet()->getRowDimension($i)->setCollapsed(false);
    $i++;
    }
    }
    }

    Відповісти

  • Жалгас пише:
    13.10.2015 в 12:29

    А як створити файл і потім просто додавати в нього значення?

    Відповісти