Операційні системи 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
Коментарі
03.02.2014 в 14:55
Супер, дякую, саме цього мені і не вистачало, CSV не відповідає багатьом вимогам.
Відповісти
21.01.2015 у 17:01
Чи можна створити файл Excel c згрупувати рядками ( + і — ) ? Якщо можна, напишіть невеликі приклади. Заздалегідь дякую!
Відповісти
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
А як створити файл і потім просто додавати в нього значення?
Відповісти