Php excel объединенные ячейки

I have a simple table like:


- id 
- first_name
- last_name
- email
- phone

I’m using PHPExcel to export my data in XLS format


    $rowNumber = 1;
    while ($row = mysql_fetch_row($result)) {
       $col = 'A';
       foreach($row as $cell) {
          $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
          $col++;
       }
       $rowNumber++;
   }

Now I want to merge the two fields first_name & last_name in one Cell

I tried:


$rowNumber = 1;
   while ($row = mysql_fetch_row($result)) {
   $objPHPExcel->getActiveSheet()->setCellValue('A'.$rowNumber,$row['id'])
                                 ->setCellValue('B'.$rowNumber,$row['first_name'])
                                 ->setCellValue('C'.$rowNumber,$row['last_name']);                                                                  
   $rowNumber++;
}

But I get errors and don’t works. Any help?

Using the generated file from the tutorial Create Xlsx Files With Different Cell Background Colors, learn how to merge cells in PhpSpreadsheet.

Requirements:

  • Composer
  • PHP 7.2 or newer

Before Cell Merging

Step 1.

Setup dependencies.

{
    "require": {
        "phpoffice/phpspreadsheet": "^1.3"
    }
}

Step 2.

Install phpspreadsheet.

$ composer install

Step 3.

Create a new PHP file, and start coding.

<?php

// Autoload dependencies
require 'vendor/autoload.php';

// Import the IOFactory class
use PhpOfficePhpSpreadsheetIOFactory;

// Import the Xlsx writer class
use PhpOfficePhpSpreadsheetWriterXlsx;

// Full path of the file to be indentified
$inputFileName = 'create-xlsx-files-with-different-cell-background-colors.xlsx';

// Identify the file type using the IOFactory object
$inputFileType = IOFactory::identify($inputFileName);

// Create the reader object
$reader = IOFactory::createReader($inputFileType);

// Load the file to read
$spreadsheet = $reader->load($inputFileName);

// Retrieve the current active worksheet
$sheet = $spreadsheet->getActiveSheet();

// Merge cells from A1 to D5
$sheet->mergeCells('A1:D5');

// Write a new .xlsx file
$writer = new Xlsx($spreadsheet);

// Save the new .xlsx file
$writer->save('merge-cells-in-xlsx-files.xlsx');

Test.

Run the following codes.

$ php merge-cells-in-xlsx-files.php

Result.

Open the generated file merge-cells-in-xlsx-files.xlsx.

References:

  • How to install PhpSpreadsheet
  • Create Xlsx Files With Different Cell Background Colors
  • Read Xlsx Files Using IOFactory Class
  • Creating a spreadsheet
  • Reading and writing to file
  • Reading Files
  • PhpSpreadsheet Recipes
  • Merge/unmerge cells

I used this function to export,

where $query variable holds the mysql query which is sent as a parameter,
and in $fieldname variable, array of fieldnames to display header.

everything is ok, n works properly.
one thing i cudn’t do was merging cells….

function to_excel_export($query,$fieldName)
{

 $filename = date('d-m-Y');
 $headers = ''; 
 $data = '';
 $obj =& get_instance();
 if ($query->num_rows() == 0)
 {
      echo '<p>The table appears to have no data.</p>';
 }
 else
 {
     for($i=0;$i<sizeof($fieldName);$i++)
     {
         $headers .= $fieldName[$i] . "t";
     }

      foreach ($query->result() as $row)
      {
           $line = '';
           foreach($row as $value)
           {                                            
                if ((!isset($value)) OR ($value == ""))
                {
                   $value = "t";
                } 
                else 
                {
                   $value = str_replace('"', '""', $value);
                   $value = '"' . $value . '"' . "t";
                }
                $line .= $value;
           }
           $data .= trim($line)."n";
      }

      $data = str_replace("r","",$data);
      header("Content-type: application/x-msdownload");
      header("Content-Disposition: attachment; filename=$filename.xls");

      $compName = 'C O M P A N Y - N A M E ';
      echo $compName."nn";
      echo $headers."n".$data; 
 }

}

$compName = 'C O M P A N Y - N A M E ';
      echo $compName."nn";

how to merge the cells to display the name which is in $compName variable.

Phpspreadsheet — вставка новой линии, объединение ячеек и указание высоты

26.10.2021

Пара небольших трюков, при работе с эксель файлами в php через библиотеку phpspreadsheet.

Основная статья по работе с phpspreadsheet.

Вставляем новую строку в уже сформированный документ:

 
$oSpreadsheet->getActiveSheet()->insertNewRowBefore(10, 2);

— где:
10 — перед какой строкой вставить новую.
2 — количество вставляемых строк.

Объединяем ячейки и указание высоты одной строки:

 
$oSpreadsheet->setActiveSheetIndex(0)
  ->mergeCells('C1:F1')
  ->getRowDimension(10)->setRowHeight(50)
;

— где:
mergeCells(‘C1:F1’) — объединяем ячейки первой строки с C по F.
getRowDimension(10)->setRowHeight(50) — указываем высоту в 50 пикселей, для 10 строки.


Категории: PHP

Создание документа

require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel.php';
require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel/Writer/Excel2007.php';
 
$xls = new PHPExcel();

Если нужно открыть существующий файл:

require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel.php';
require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel/Writer/Excel2007.php';
require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php';
 
$xls = PHPExcel_IOFactory::load(__DIR__ . '/file.xlsx');

Установка сводки документа:

$xls->getProperties()->setTitle("Название");
$xls->getProperties()->setSubject("Тема");
$xls->getProperties()->setCreator("Автор");
$xls->getProperties()->setManager("Руководитель");
$xls->getProperties()->setCompany("Организация");
$xls->getProperties()->setCategory("Группа");
$xls->getProperties()->setKeywords("Ключевые слова");
$xls->getProperties()->setDescription("Примечания");
$xls->getProperties()->setLastModifiedBy("Автор изменений");
$xls->getProperties()->setCreated("25.03.2019");

Защита книги паролем:

$xls->getActiveSheet()->getProtection()->setSheet(true);
$xls->getActiveSheet()->getProtection()->setSort(true);
$xls->getActiveSheet()->getProtection()->setInsertRows(true);
$xls->getActiveSheet()->getProtection()->setFormatCells(true);
$xls->getActiveSheet()->getProtection()->setPassword('123456');

Создаие нового лист

$xls->setActiveSheetIndex(0);
$sheet = $xls->getActiveSheet();
$sheet->setTitle('Название листа');

Параметры печати

// Формат
$sheet->getPageSetup()->SetPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
 
// Ориентация
// ORIENTATION_PORTRAIT — книжная
// ORIENTATION_LANDSCAPE — альбомная
$sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_PORTRAIT);
 
// Поля
$sheet->getPageMargins()->setTop(1);
$sheet->getPageMargins()->setRight(0.75);
$sheet->getPageMargins()->setLeft(0.75);
$sheet->getPageMargins()->setBottom(1);
 
// Верхний колонтитул
$sheet->getHeaderFooter()->setOddHeader("Название листа");
 
// Нижний колонтитул
$sheet->getHeaderFooter()->setOddFooter('&L&B Название листа &R Страница &P из &N');

Запись в ячейку и ее формат

$sheet->setCellValue("A1", "Значение");

Формат ячеек определяется автоматически, иногда это вызывает проблемы. Например, значения 1., 10.0, 0.1 выведутся как 1, 10, 0,1. Чтобы это исправить нужно использовать метод setCellValueExplicit() в место setCellValue().

$sheet->setCellValueExplicit("A1", '1.', PHPExcel_Cell_DataType::TYPE_STRING);
$sheet->setCellValueExplicit("A2", '10.0', PHPExcel_Cell_DataType::TYPE_STRING);
$sheet->setCellValueExplicit("A3", '0.1', PHPExcel_Cell_DataType::TYPE_STRING);

Размеры ячеек

Ширина столбцов

// Ширина столбца A 
$sheet->getColumnDimension("A")->setWidth(100);
 
// Авто ширина колонки по содержимому
$sheet->getColumnDimensionByColumn("A")->setAutoSize(true);

Высота строк

// Высота 1-й строки
$sheet->getRowDimension("1")->setRowHeight(50);

Вставленный в ячейку длинный текст будет выходить за ее пределы, переносы rn работать не будут.

$sheet->setCellValue("A1", "Excel — программа rn для работы с электронными таблицами");

Метод setWrapText(true) включает переносы строк и авто высоту.

$sheet->setCellValue("A1", "Excel — программа rn для работы с электронными таблицами");
$sheet->getStyle("A1")->getAlignment()->setWrapText(true);

Объединение ячеек

// Объединение ячеек в колонке
$sheet->mergeCells("A1:A6");
$sheet->setCellValue("A1", "A1:A6");
 
// Объединение ячеек в строке
$sheet->mergeCells("C2:I2");
$sheet->setCellValue("C2", "C2:I2");
 
// Объединение ячеек по диапазону
$sheet->mergeCells("C4:I6");
$sheet->setCellValue("C4", "C4:I6");

Стили текста

// Шрифт Times New Roman
$sheet->getStyle('A1')->getFont()->setName('Times New Roman');
 
// Размер шрифта 18
$sheet->getStyle("A2")->getFont()->setSize(18);
 
// Цвет шрифта
$sheet->getStyle("A3")->getFont()->getColor()->setRGB('ff0000');
 
// Жирный
$sheet->getStyle("A4")->getFont()->setBold(true);
 
// Курсив
$sheet->getStyle("A5")->getFont()->setItalic(true);
 
// Подчеркнутый текст
$sheet->getStyle("A6")->getFont()->setUnderline(true);
 
// Зачеркнутый текст
$sheet->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,
	)
);
 
$sheet->getStyle('A1')->applyFromArray($style);

Установить стили шрифта для всего документа:

$sheet->getDefaultStyle()->getFont()->setName('Times New Roman');
$sheet->getDefaultStyle()->getFont()->setSize(18);

Или:

$style = array(
	'font' => array(
		'name' => 'Times New Roman',
		'size' => 18,  
	)
);
 
$sheet->getDefaultStyle()->applyFromArray($style);

Выравнивание в ячейке

По горизонтали:

// По левому краю
$sheet->getStyle("A1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
 
// По центру
$sheet->getStyle("A1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
// По правому краю
$sheet->getStyle("A1")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);

По вертикали:

// Сверху
$sheet->getStyle("A1")->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_TOP);
 
// По центру
$sheet->getStyle("A1")->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
 
// Снизу
$sheet->getStyle("A1")->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_BOTTOM);

Фон ячейки

Стили фона устанавливаются массивом значений, type – определяет стиль заливки, далее в зависимости от выбранного стиля задаются его настройки в параметрах color, startcolor, endcolor, rotation.

PHPExcel_Style_Fill::FILL_SOLID

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_SOLID,
		'color' => array('rgb' => '01B050')
	)
);
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
		'rotation' => 90
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_GRADIENT_PATH

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_GRADIENT_PATH,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_DARKUP

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_DARKUP,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_GRAY125

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_GRAY125,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY

$bg = array(
	'fill' => array(
		'type' => PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY,
		'startcolor' => array('rgb' => '01B050'),
		'endcolor' => array('rgb' => 'f1ee3b'),
	)
);                 
$sheet->getStyle("B2")->applyFromArray($bg);

Границы

Стили линий задаются костантами:

Вид Константа
PHPExcel_Style_Border::BORDER_NONE
PHPExcel_Style_Border::BORDER_THIN
PHPExcel_Style_Border::BORDER_MEDIUM
PHPExcel_Style_Border::BORDER_THICK
PHPExcel_Style_Border::BORDER_DOUBLE
PHPExcel_Style_Border::BORDER_HAIR
PHPExcel_Style_Border::BORDER_DOTTED
PHPExcel_Style_Border::BORDER_DASHED
PHPExcel_Style_Border::BORDER_DASHDOT
PHPExcel_Style_Border::BORDER_DASHDOTDOT
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT
PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT
PHPExcel_Style_Border::BORDER_MEDIUMDASHED
PHPExcel_Style_Border::BORDER_SLANTDASHDOT

Внешняя рамка у ячеек

$border = array(
	'borders'=>array(
		'outline' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		),
	)
);
 
$sheet->getStyle("B2:J5")->applyFromArray($border);

Внутриния рамка у ячеек

$border = array(
	'borders'=>array(
		'inside' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		),
	)
);
 
$sheet->getStyle("B2:J5")->applyFromArray($border);

Таблица

$border = array(
	'borders'=>array(
		'allborders' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		)
	)
);
 
$sheet->getStyle("B2:J5")->applyFromArray($border);

Таблица с жирной рамкой

$border = array(
	'borders'=>array(
		'outline' => array(
			'style' => PHPExcel_Style_Border::BORDER_THICK,
			'color' => array('rgb' => '000000')
		),
		'allborders' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		)
	)
);
 
$sheet->getStyle("B2:J5")->applyFromArray($border);

Отдельные линии

			case '':
			case 'bottom':
			case 'diagonal':
			case 'horizontal':
			case '':
			case 'left':
			case '':
			case 'right':
			case 'top':
			case 'vertical':

Сверху:

$border = array(
	'borders'=>array(
		'top' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		)
	)
);
$sheet->getStyle("B2")->applyFromArray($border);

Снизу:

$border = array(
	'borders'=>array(
		'bottom' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		)
	)
);
$sheet->getStyle("B4")->applyFromArray($border);

Слева:

$border = array(
	'borders'=>array(
		'left' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		)
	)
);
$sheet->getStyle("B6")->applyFromArray($border);

Справа:

$border = array(
	'borders'=>array(
		'right' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		)
	)
);
$sheet->getStyle("B8")->applyFromArray($border);

Изображения

$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setResizeProportional(false);  
$objDrawing->setName('Название картинки');
$objDrawing->setDescription('Описание картинки');
$objDrawing->setPath(__DIR__ . '/logo.png');
$objDrawing->setCoordinates('B2');                      
$objDrawing->setOffsetX(10); 
$objDrawing->setOffsetY(10);                
$objDrawing->setWidth(163); 
$objDrawing->setHeight(50); 
$objDrawing->setWorksheet($sheet);

Гиперссылки

$sheet->setCellValue("A1", "Ссылка на example.com");
$sheet->getCell("A1")->getHyperlink()->setUrl("http://example.com");
$sheet->getCell("A1")->getHyperlink()->setTooltip('Подсказка');
 
// У текста нужно сделать синий цвет и подчеркивание
$sheet->getStyle("A1")->applyFromArray(
	array(
		'font' => array(
			'color' => array(
				'rgb' => '0000FF'
			), 
			'underline' => 'single'
		)
	)
);

Формулы

Русские названия функций не поддерживаются, придется использовать латинские аналоги.

$sheet->setCellValue("A3", "=SUM(A1:A2)");
СУММ SUM Cуммирование значений в ячейках
ЕСЛИ IF Условие
ПРОСМОТР LOOKUP Поиск по значению
ВПР VLOOKUP Поиск значения по диапазону
ПОИСКПОЗ MATCH Поиск положенияв диапазоне ячеек
ВЫБОР CHOOSE Выбор одного значения из списка
ДАТА DATE Возвращает порядковый номер определенной даты
ДНИ DAYS Возвращает число дней между двумя датами
НАЙТИ, НАЙТИБ FIND, FINDB Поиск вхождения одной строки в другую
ИНДЕКС INDEX Возвращает значение или ссылку на него из таблицы или диапазона

Сохранение

XLSX

Отдача на скачивание:

header("Expires: Mon, 1 Apr 1974 05:00:00 GMT");
header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename=file.xlsx");
 
$objWriter = new PHPExcel_Writer_Excel2007($xls);
$objWriter->save('php://output'); 
exit();

Если возникает ошибка – «Uncaught exception ‘PHPExcel_Writer_Exception’ with message ‘Could not close zip file php://output.’», то следует сделать скачивание через временный файл:

header("Expires: Mon, 1 Apr 1974 05:00:00 GMT");
header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename=file.xlsx");
 
$file_path = __DIR__ . "/xlsx.tmp";
$objWriter = new PHPExcel_Writer_Excel2007($xls);
$objWriter->save($file_path);
readfile($file_path);
unlink($file_path);
exit();

Сохранение в файл:

$objWriter = new PHPExcel_Writer_Excel2007($xls);
$objWriter->save(__DIR__ . '/file.xlsx');

XLS

Отдача на скачивание:

header("Expires: Mon, 1 Apr 1974 05:00:00 GMT");
header("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=file.xls");
	
$objWriter = new PHPExcel_Writer_Excel5($xls);
$objWriter->save('php://output'); 
exit();

Сохранение в файл:

$objWriter = new PHPExcel_Writer_Excel5($xls);
$objWriter->save(__DIR__ . '/file.xlsx');

Источник: https://snipp.ru/php/phpexcel

Понравилась статья? Поделить с друзьями:
  • Php excel на страницу
  • Php excel выпадающий список
  • Php excel в массиве
  • Php excel без библиотек
  • Php excel with csv