Подтвердить что ты не робот

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

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