2013-10-16 43 views
17

我目前正在嘗試爲我的電子表格設置所有邊框,並且還設置了諸如autosize之類的格式。PHPExcel爲電子表格中的所有工作表設置邊框和格式

我的代碼如下,對於工作表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); 

EXTRA問題: 我當前設置標題。標題出現在表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'); 

回答

37

您可以爲整個工作簿默認樣式(所有工作表):

$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作家

+0

我得到了一個錯誤選項1:致命錯誤:未捕獲的異常'異常'的消息'只能獲取主管僞邊界。'在第384行 (!)的C:\ wamp \ www \ site \ Excel \ Classes \ PHPExcel \ Style \ Borders.php中例外:只能爲管理員獲取僞邊框。在線384 – Tuzki

+0

C:\ wamp \ www \ site \ Excel \ Classes \ PHPExcel \ Style \ Borders.php我的不好,你必須設置單獨的邊框,或者使用applyFromArray()方法來設置allborders –

+0

我已經決定使用Excel5及其現在的工作:選項1,但是有什麼辦法可以限制從我上面的代碼繪製的邊框的數量,從A2? – Tuzki

1
for ($s=65; $s<=90; $s++) { 
    //echo chr($s); 
    $objPHPExcel->getActiveSheet()->getColumnDimension(chr($s))->setAutoSize(true); 
} 
+0

ascii大寫字母偏移量。 – TARKUS

0

回答你extra question

可以使用設置哪些行應在每一頁上重複:

$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 5);

現在,第1,2,3,4和5行將重複。

相關問題