現在、スプレッドシートのすべての境界線を設定しようとしていますが、自動サイズ調整などの書式設定もしています。
以下のコードは、シート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が繰り返されます。