2013-04-30 6 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では動作しませんが、なぜ論理的にすべてのセル?あなたはあなたのワークブックを非常に重くするでしょう。 phpにはデータ範囲内の最後のセルを見つける方法がありますか?はいの場合、範囲を定義してその範囲に境界線を適用できますか? –

答えて

24

あなたがされている任意のワークシートの範囲を読むことができる必要がありますが、全体のワークブック

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

に適用されるデフォルトスタイルを設定読み込まれ、その範囲のスタイルを設定する

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

ありがとう、それはほとんどの細胞のために働いていますが、いくつかの国境が適用されていないです。これがなぜなのか? – imperium2335

+0

これらのセルは明示的にborder = noneにフォーマットされていることが示唆されています。個々のセルスタイルは範囲スタイルをオーバーライドし、デフォルトスタイルをオーバーライドします –

+0

+1これはデータがある最後のセルを見つける方法です... –

関連する問題