PHPExcel устанавливает границу и формат для всех листов в электронной таблице.
В настоящее время я пытаюсь установить все границы для своей таблицы, а также форматирование, такое как autosize.
Мой код ниже работает для листа 1. Все остальные листы внутри электронной таблицы полностью нетронуты. Я пытался заставить его работать со всеми другими листами внутри этой таблицы, но не повезло.
Любые идеи о том, как я могу глобально установить форматирование, чтобы все листы имели границы и автоматизировали? Расположение всех листов в этой таблице одинаково. Я экспортирую в файл XLSX.
Приветствия,
/**autosize*/
for ($col = 'A'; $col != 'P'; $col++) {
$objPHPExcel->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);
}
/** Borders for all data */
$objPHPExcel->getActiveSheet()->getStyle(
'A2:' .
$objPHPExcel->getActiveSheet()->getHighestColumn() .
$objPHPExcel->getActiveSheet()->getHighestRow()
)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
/** Borders for heading */
$objPHPExcel->getActiveSheet()->getStyle(
'A1:O1'
)->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THICK);
ДОПОЛНИТЕЛЬНЫЙ ВОПРОС:
В настоящее время я устанавливаю заголовки. Заголовки отображаются на листе 1, но не отображаются ни в каких других листах. Можно ли показывать заголовки во всех листах?
Заголовки задаются в строке 1. и результаты от строки 2 вниз.
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Asset_id');
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Asset_name');
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Asset_type');
$objPHPExcel->getActiveSheet()->setCellValue('D1', 'Asset_make');
$objPHPExcel->getActiveSheet()->setCellValue('E1', 'Asset_model');
Ответы
Ответ 1
Вы можете установить стиль по умолчанию для всей книги (все рабочие листы):
$objPHPExcel->getDefaultStyle()
->getBorders()
->getTop()
->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
->getBorders()
->getBottom()
->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
->getBorders()
->getLeft()
->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getDefaultStyle()
->getBorders()
->getRight()
->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
или
$styleArray = array(
'borders' => array(
'allborders' => array(
'style' => PHPExcel_Style_Border::BORDER_THIN
)
)
);
$objPHPExcel->getDefaultStyle()->applyFromArray($styleArray);
И это может использоваться для всех свойств стиля, а не только для границ.
Но автосогласование столбцов - structural
, а не stylistic
, и должно быть установлено для каждого столбца на каждом листе отдельно.
ИЗМЕНИТЬ
Обратите внимание, что стиль рабочей книги по умолчанию применяется только к Excel5 Writer
Ответ 2
for ($s=65; $s<=90; $s++) {
//echo chr($s);
$objPHPExcel->getActiveSheet()->getColumnDimension(chr($s))->setAutoSize(true);
}
Ответ 3
Чтобы ответить на extra question
:
Вы можете указать, какие строки следует повторять на каждой странице, используя:
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 5);
Теперь строки 1, 2, 3, 4 и 5. будут повторяться.