В настоящее время я пытаюсь установить все границы для своей таблицы, а также форматирование, такое как 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');
Вы можете установить стиль по умолчанию для всей книги (все рабочие листы):
$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
for ($s=65; $s<=90; $s++) { //echo chr($s); $objPHPExcel->getActiveSheet()->getColumnDimension(chr($s))->setAutoSize(true); }
Чтобы ответить на ваш extra question
:
Вы можете указать, какие строки следует повторять на каждой странице, используя:
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 5);
Теперь строки 1, 2, 3, 4 и 5 будут повторяться.