PHPExcel - главные функции с примерами

PHPExcel php   11770  

Библиотека для генерации Excel-файлов средствами PHP

Библиотека на Github

Содержание

  1. Создание документа
  2. Вставка текста/формул в ячейку
  3. Объединение ячеек
  4. Перенос текста в ячейке
  5. Автоматическая ширина колонки по содержимому
  6. Изменение названия листа
  7. Стили текста
  8. Фон ячейки
  9. Гиперссылки
  10. Рамки (границы)
  11. Выравнивание в ячейках
  12. Сохранение документа

 


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


Поиск

Метки