PHPExcel - главные функции с примерами
Библиотека для генерации Excel-файлов средствами PHP
Библиотека на Github
Содержание
- Создание документа
- Вставка текста/формул в ячейку
- Объединение ячеек
- Перенос текста в ячейке
- Автоматическая ширина колонки по содержимому
- Изменение названия листа
- Стили текста
- Фон ячейки
- Гиперссылки
- Рамки (границы)
- Выравнивание в ячейках
- Сохранение документа
1. Создание документа
require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel.php';
require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel/Writer/Excel2007.php';
$xls = new PHPExcel();
2. Вставка текста/формул в ячейку
//в ячейку А1 записываем "Наименование проекта"
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', 'Наименование проекта');
//пример формулы
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', "=SUM(B2:B6)" );
К сожалению, наименования русских формул не поддерживаются, так что придется поискать аналоги на латинице.
Вот некоторые из них:
DATE | ДАТА | Возвращает заданную дату в числовом формате Microsoft Excel. |
CEILING | ОКРВВЕРХ | Округляет число до ближайшего целого или до ближайшего кратного указанному значению. |
INT | ЦЕЛОЕ | Округляет число до ближайшего меньшего целого. |
AND | И | Выдает значение ИСТИНА, если все аргументы имеют значение ИСТИНА. |
FALSE | ЛОЖЬ | Вставляет логическое значение ЛОЖЬ. |
IF | ЕСЛИ | Выполняет проверку условия. |
NOT | НЕ | Меняет на противоположное логическое значение своего аргумента. |
OR | ИЛИ | Выдает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА. |
TRUE | ИСТИНА | Вставляет логическое значение ИСТИНА. |
3. Объединение ячеек
//объединяем ячейки с В1 по С1 и вставляем текст "Год"
$objPHPExcel->setActiveSheetIndex(0)
->mergeCells( 'B1:C1')
->setCellValue( 'B1', 'Год');
4. Перенос текста в ячейке
//переносить слова в ячейках с B1 по L1
$objPHPExcel->setActiveSheetIndex(0)->getStyle('B1:L1')->getAlignment()->setWrapText(true);
5. Автоматическая ширина колонки по содержимому
//Автоширина всей колонки по содержимому
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
6. Изменение названия листа
$objPHPExcel->getActiveSheet()->setTitle('Sheet1');
7. Стили текста
// Шрифт Times New Roman
$objPHPExcel->getStyle('A1')->getFont()->setName('Times New Roman');
// Размер шрифта 18
$objPHPExcel->getStyle("A2")->getFont()->setSize(18);
// Цвет шрифта
$objPHPExcel>getStyle("A3")->getFont()->getColor()->setRGB('ff0000');
// Жирный
$objPHPExcel->getStyle("A4")->getFont()->setBold(true);
// Курсив
$objPHPExcel->getStyle("A5")->getFont()->setItalic(true);
// Подчеркнутый текст
$objPHPExcel->getStyle("A6")->getFont()->setUnderline(true);
// Зачеркнутый текст
$objPHPExcel->getStyle("A7")->getFont()->setStrikethrough(true);
то же самое с помощью массива
$style = array(
'font' => array(
'name' => 'Times New Roman',
'size' => 18,
'color' => array('rgb' => 'FF0000'),
'bold' => true,
'italic' => true,
'underline' => true,
'strike' => true,
)
);
$objPHPExcel->getStyle('A1')->applyFromArray($style);
//для всего документа
$objPHPExcel->getDefaultStyle()->getFont()->setName('Times New Roman');
$objPHPExcel->getDefaultStyle()->getFont()->setSize(18);
//.....
$style = array(
'font' => array(
'name' => 'Times New Roman',
'size' => 18,
)
);
$objPHPExcel->getDefaultStyle()->applyFromArray($style);
8. Фон ячейки
$objPHPExcel->getActiveSheet()
->getStyle( "A2" )
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()->setRGB('A7E87C');
9. Гиперссылки
$objPHPExcel->setCellValue("A1", "Ссылка на example.com");
$objPHPExcel->getCell("A1")->getHyperlink()->setUrl("http://example.com");
$objPHPExcel->getCell("A1")->getHyperlink()->setTooltip('Подсказка');
// У текста можно сделать синий цвет и подчеркивание
$objPHPExcel->getStyle("A1")->applyFromArray(
array(
'font' => array(
'color' => array(
'rgb' => '0000FF'
),
'underline' => 'single'
)
)
);
10. Рамки (границы)
objPHPExcel->getActiveSheet()
->getStyle( "A2" )
->getBorders()
->getAllBorders()
->setBorderStyle(PHPExcel_Style_Border::BORDER_DOTTED);
$border = array(
'borders'=>array(
'outline' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN,
'color' => array('rgb' => '000000')
),
)
);
$objPHPExcel->getStyle("B2:J5")->applyFromArray($border);
- outline - внешняя рамка
- inside - внутренняя рамка
- allborders - таблица
- bottom - снизу
- right -справа
- top - вверху
- left - слева
11. Выравнивание в ячейках
//выравнивание по горизонтали
$objPHPExcel->getActiveSheet()->getStyle('A1:K1')->getAlignment()->setHorizontal('center');
//выравнивание по вертикали
$objPHPExcel->getActiveSheet()->getStyle('A1:K1')->getAlignment()->setVertical('center');
Доступны следующие стили:
- center - по центру
- left - по левому краю (отступ)
- right - по правому краю (отступ)
- general - по значению
- centerContinuous - по центру выделения
- justify - по ширине
- fill - с заполнением
- distributed - распределенное (отступ) //только для Excel 2007
12. Сохранение документа
//отдача на скачивание Exel 2003, 2007
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8');
header('Content-Disposition: attachment;filename="MySheet.xls"'); //xlsx
header('Cache-Control: max-age=0');
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); //PHPExcel_Writer_Excel2007
$objWriter->save('php://output');
exit();
//сохранить в файл Exel 2003, 2007
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); //PHPExcel_Writer_Excel2007
$objWriter->save(__DIR__ . '/file.xls'); //xlsx