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

Вы можете установить стиль по умолчанию для всей книги (все рабочие листы):

 $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 будут повторяться.