2013-04-30 21 views
5

我有我的Excel閱讀器工作,但有一個惱人的問題,我只能找到有關如何將邊框應用於一系列單元格的信息,這是無用的爲我的應用程序。如何將邊界應用到所有單元格,而不是範圍!

用戶上傳可在稍後查看的Excel工作表。所以單元格範圍方法將不起作用,因爲範圍發生了變化。

是否沒有默認參數來設置所有單元格樣式等?

以下是我有:

require_once ROOT . '/libs/PHPExcel/IOFactory.php'; 
     $excel = PHPExcel_IOFactory::load('../public_html/uploads/' . $filename); 
     PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT); 
     $writer = PHPExcel_IOFactory::createWriter($excel, 'HTML'); 

     $writer->setUseInlineCSS(true); 
     $styleArray = array(
      'borders' => array(
       'allborders' => array(
        'style' => PHPExcel_Style_Border::BORDER_THIN 
      ) 
     ) 
    ); 

     $excel->getActiveSheet()->getStyle('A1:B1')->applyFromArray($styleArray); 
     unset($styleArray); 
     $writer->save('uploads/excel-sheet.html'); 
     header('Location: ' . WROOT . 'uploads/excel-sheet.html'); 
+0

我不使用php,但邏輯思考爲什麼所有單元格?你會讓你的工作簿非常沉重。是否有任何方法來找到您的數據範圍內的最後一個單元格?如果是,那麼你可以定義你的範圍,然後將邊界應用到該範圍? – 2013-04-30 11:08:07

回答

24

設置將適用於整個工作簿

$excel->getDefaultStyle()->applyFromArray($styleArray); 

雖然你應該能夠讀取範圍爲已任工作表中的默認樣式加載,並設置該範圍的樣式

$excel->getActiveSheet()->getStyle(
    'A1:' . 
    $excel->getActiveSheet()->getHighestColumn() . 
    $excel->getActiveSheet()->getHighestRow() 
)->applyFromArray($styleArray); 
+0

謝謝,這對大多數單元格都有效,但也有一些沒有應用邊框。任何想法爲什麼這是? – imperium2335 2013-04-30 11:11:11

+0

它表明這些單元格被明確地格式化爲border = none。個別單元格樣式覆蓋範圍樣式,這又覆蓋默認樣式 – 2013-04-30 11:11:44

+0

+ 1所以我是對的:)有一種方法來查找最後一個單元格有數據... – 2013-04-30 11:14:24

相關問題