Перенос строки в ячейке excel php

Доброго всем времени суток господа

Пользуюсь phpexcel’ем, причем не первый день. Одну штуковину упорно не могу найти в мануале (или нет ее там). Ищу перенос внутри ячейки. Вот допустим вам нужно вставить 200 знаков в ячейку, и они не влезают. В экселе есть кнопка — перенос текста. Вот интересует как нужную ячейку отформатировать, что бы этот перенос был. Можно ли так вообще?

Смысл в том, что текст помещается в ячейке, путем автоматического переноса по строкам. Вот собственно и все, только команды не знаю, ее и спрашиваю.

p.s.

// выдернул из кода

// выравниваю как надо
$page->getStyle("".$jax."".$stroka."")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$page->getStyle("".$jax."".$stroka."")->applyFromArray(array("font" => array( "bold" => true)));

// вставляю данные, и проклятая переменная $for, неприлично длинная
$page->setCellValue("".$jax."".$stroka."", "".$for."");

i have problem with php excel,

i want to make new line in one cell but i can’t, i have tried using n or <br /> but itsn’t work. this my code:

$objPHPExcel->getActiveSheet()->setCellValue('H5', 'HellonWorld'); // i need this show in two line
$objPHPExcel->getActiveSheet()->getStyle('H5')->getAlignment()->setWrapText(true);

fyi: my format excel is xls not xlsx.
many thanks :)

pnuts's user avatar

pnuts

58k11 gold badges85 silver badges137 bronze badges

asked May 11, 2011 at 6:40

bungdito's user avatar

3

$objPHPExcel->getActiveSheet()->setCellValue('H5', "HellonWorld");
$objPHPExcel->getActiveSheet()->getStyle('H5')->getAlignment()->setWrapText(true);

Works for me…

You should always use double quotes when you add escape sequences in a PHP string.

answered May 11, 2011 at 8:23

wimvds's user avatar

wimvdswimvds

12.8k2 gold badges40 silver badges42 bronze badges

3

you should use ‘r’ to break into new line into excel with php

and use double quotes when you add escape sequences in a PHP string.

  $objPHPExcel->getActiveSheet()->setCellValue('H5', "Hellor World");
  $objPHPExcel->getActiveSheet()->getStyle('H5')->getAlignment()->setWrapText(true);

Agriesean's user avatar

answered May 11, 2011 at 8:43

Ravin's user avatar

RavinRavin

3711 gold badge3 silver badges5 bronze badges

4

Improved answer based on Ravin and others

$objPHPExcel
  ->getActiveSheet()
  ->setCellValue('H5', "Hello".PHP_EOL." World");

$objPHPExcel
  ->getActiveSheet()
  ->getStyle('H5')
  ->getAlignment()
  ->setWrapText(true);

fehrlich's user avatar

fehrlich

2,4672 gold badges26 silver badges44 bronze badges

answered Jan 22, 2016 at 3:14

Muhammad Amjad's user avatar

2

We can set for the default style, so don’t need to specify for each cell range:
$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true);

answered Feb 12, 2019 at 14:32

Andron's user avatar

AndronAndron

6,2634 gold badges43 silver badges54 bronze badges

To achieve next line but same cell forxcel export, this is the simplest solution.

<tr>
    <td style="wrap-text: true">
        Test
        <br />
        Test2
    </td>
</tr>

Pang's user avatar

Pang

9,438146 gold badges85 silver badges121 bronze badges

answered Dec 19, 2017 at 5:28

Ambrish Dharane's user avatar

1

К сожалению разработчики прекратили поддержку и разработку проекта, но PHPExcel все равно остается популярной библиотекой которая выполняет свои задачи, последняя версия нормально работает на PHP 7.

Проект на 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();

PHP

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

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');

PHP

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

$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");

PHP

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

$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');

PHP

Создаем новый лист, далее работаем с ним через переменную $sheet.

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

PHP

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

// Формат
$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');

PHP

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

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

PHP

Формат ячеек определяется автоматически, иногда это вызывает проблемы. Например, значения 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);

PHP

2

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

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

// Ширина столбца A 
$sheet->getColumnDimension("A")->setWidth(100);

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

PHP

Высота строк

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

PHP

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

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

PHP

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

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

PHP

3

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

// Объединение ячеек в колонке
$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");

PHP

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

4

Стили текста

// Шрифт 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);

PHP

Стили текста PHPExcel

Также можно задать сразу несколько стилей для ячейки, массивом:

$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);

PHP

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

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

PHP

Или:

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

$sheet->getDefaultStyle()->applyFromArray($style);

PHP

5

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

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

// По левому краю
$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);

PHP

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

// Сверху
$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);

PHP

6

Фон ячейки

Стили фона устанавливаются массивом значений, 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);

PHP

PHPExcel_Style_Fill::FILL_SOLID

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);

PHP

PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR

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);

PHP

PHPExcel_Style_Fill::FILL_GRADIENT_PATH

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_DARKUP

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_GRAY125

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL

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);

PHP

PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY

7

Границы

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

Вид Константа
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);

PHP

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

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

$border = array(
	'borders'=>array(
		'inside' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		),
	)
);

$sheet->getStyle("B2:J5")->applyFromArray($border);

PHP

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

Таблица

$border = array(
	'borders'=>array(
		'allborders' => array(
			'style' => PHPExcel_Style_Border::BORDER_THIN,
			'color' => array('rgb' => '000000')
		)
	)
);

$sheet->getStyle("B2:J5")->applyFromArray($border);

PHP

Таблица

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

$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);

PHP

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

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

            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);

PHP

Снизу:

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

PHP

Слева:

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

PHP

Справа:

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

PHP

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

8

Изображения

$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);

PHP

Изображения в PHPExcel

9

$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'
		)
	)
);

PHP

Гиперссылка в PHPExcel

10

Формулы

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

$sheet->setCellValue("A3", "=SUM(A1:A2)");

PHP

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

11

Сохранение

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();	

PHP

Если возникает ошибка – «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();

PHP

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

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

PHP

XLS (Excel 97-2004)

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

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();	

PHP

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

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

PHP

I know that this line of code will make the cell text-wrap:

$objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setWrapText(true);

‘D1’ being the chosen cell.

Instead of using this code for every cell I need wrapped, is there a way to make the entire Excel Worksheet automatically wrap everything?

Or is there a better practice technique to use for specified columns?

asked Jul 2, 2012 at 19:04

tehlivi's user avatar

tehlivitehlivi

7911 gold badge12 silver badges26 bronze badges

2

Apply to a range:

$objPHPExcel->getActiveSheet()->getStyle('D1:E999')
    ->getAlignment()->setWrapText(true); 

Apply to a column

$objPHPExcel->getActiveSheet()->getStyle('D1:D'.$objPHPExcel->getActiveSheet()->getHighestRow())
    ->getAlignment()->setWrapText(true); 

answered Jul 2, 2012 at 20:06

Mark Baker's user avatar

Mark BakerMark Baker

208k31 gold badges340 silver badges383 bronze badges

4

$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true);

Sourabh Kumar Sharma's user avatar

answered Nov 12, 2015 at 6:23

james's user avatar

jamesjames

3313 silver badges2 bronze badges

1

Apply to column

$highestRow = $$objPHPExcel->getActiveSheet()->getHighestRow();
for ($row = 1; $row <= $highestRow; $row++){
    $sheet->getStyle("D$row")->getAlignment()->setWrapText(true);
}

answered Jul 10, 2014 at 7:36

Naitik Shah's user avatar

Naitik ShahNaitik Shah

4936 silver badges13 bronze badges

2

  • #1

php -> excel (вопрос по переводу строки)

Генерирурую файлы Excel c помощью оправки html-кода браузеру как данных msexcel. Метод работает даже лучше, чем я предполагал!

Но вот одна незадача. Мне в ячейки нужно записывать, кроме всего прочего, символы перевода строки n (в самом Excel-е они вставляются при помощи Alt+Enter). Не могу разобраться, как бы это сделать и можно ли такое сделать вообще.
На ум сразу приходит вставка тэгов <br>. Но он наботает неправильно. Вместо переводов строки, происходит переход в ячейку ниже… Просто вставлять n тоже не работает, в ячейке переход на новую строку не происходит.

Если кто-то с этим сталкивался или знаешь как решить, прошу помощи :)

  • #2

Sander
Чем создаёте excel?

  • #3

Sander
попробуй rn

Solid
Ты читать умеешь? весь пост?

  • #4

Php-скрипт :)

<?
header(«Content-Type: application/x-msexcel; charset=windows-1251; format=attachment;»);
header(«Content-Disposition: attachment; filename=»file.xls»»);
?>
<table><tr><td>тра-ля-ля</td></tr></table>

-~{}~ 20.12.06 15:10:

MiRacLe, уже попробовал — не помогло…

  • #6

Solid, поверь, даже лучше, чем ты представляешь! Даже формулы работают!

-~{}~ 20.12.06 15:20:

По поводу Spreadsheet_Excel_Writer() я отписывался в соседней теме. Провозился с ним пару дней напролет, так и не решив свою проблему…

  • #7

Sander
создай excel файл с одной ячейкой с переносом по alt+enter и сохрани как хтмл.
смотри стили в полученном исходнике
=)))

  • #8

StUV, совет хороший, спасибо. Но там как раз <br> вставляется на месте alt+enter

  • #9

Sander
В таком случае, лучше представь все данные ввиде CSV файла.

-~{}~ 20.12.06 15:52:

StUV
Таким образом после сохранения/открытия файла, все «новые строки» исчезают.

  • #10

Да в csv сохранил бы, если бы не было нужно форматирование ячеек…

  • #11

Sander
Хорошо, ещё раз всё с начала… чем конкретно не устраивает PEAR’овский класс для генерации excel файла?

Специально для вас установил OLE, Excel Writer и написал небольшой скрипт… вот что из этого получилось: http://dmitry.eu/tmp/test.xls

  • #12

Но там как раз <br> вставляется на месте alt+enter

а еще есть

br
{mso-data-placement:same-cell;}

;)

-~{}~ 20.12.06 17:06:

Solid

Таким образом после сохранения/открытия файла, все «новые строки» исчезают.

а попробовать ?

  • #14

StUV
Пробовал, правда в OpenOffice… считаю, что решение должно быть кросс-эксельным (во как).

  • #15

StUV, работает!
Но!
Устанавливаю height как в <tr>, так и в <td>. Если в первом случае все ок, то во втором высота почему-то меняется, плюс еще ко всему добавляется rowspan… В чем подвох?

Понравилась статья? Поделить с друзьями:
  • Перенос строк с листа на лист в excel
  • Перенос строки в формуле word
  • Перенос строки в строке формул excel
  • Перенос строк на другой лист excel по условию
  • Перенос строк в ячейке word