2016-05-19 6 views
0

PHPExcelを使用して、約20,000セルのスプレッドシートを作成しています。これらのセルのいくつかは、赤いスタイリングされています。赤いスタイルを適用するには、一連のセル参照を繰り返します:PHPExcel - 多くのセルにスタイルをより速く適用する

foreach ($notCheapest as $cellRef) { 
    $sheet->getStyle($cellRef)->applyFromArray([ 
     'font' => [ 
      'color' => ['rgb' => 'a00000'] 
     ] 
    ]); 
} 

これは機能しますが、実際はかなり遅いです。スタイルが付いたPHPExcelに一連のセル参照を渡す方法はありますか?私はgetterを1000回呼び出すと推測しており、applyFromArray()メソッドはここで遅さを引き起こしています。

答えて

1

スタイルを添付してPHPExcelにセル参照の配列を渡す方法はありますか?

ありませんが、あなたは連続したセルのブロックを持っている場合は、個々のセルではなく、範囲を指定することができ、それははるかに効率的です:

$sheet->getStyle('B2:C5')->applyFromArray([ 
    'font' => [ 
     'color' => ['rgb' => 'a00000'] 
    ] 
]); 

を、それはすべてのセルのためだけに、単一の要求だからその範囲内でスタイルを適用し、個々のセルではなくそのセルの範囲に適用するので、メモリ効率はもちろん速度効率も向上します

+0

ありがとうございます。私は地域を計算することは可能ではないと思う(確かに速く行うことはできない) - 私はスピードで暮らし、おそらくユーザーがスプレッドシートをダウンロードするためのキューを実装するだろう。 –

+0

また、最近phpcambridge :)私はすぐにphpexcelを使用しているとは思わなかった!素晴らしいパッケージ:) –

+1

スプレッドシートの生成に時間がかかる場合は、バックエンドプロセスとして実行し、結果をユーザーにメールするか、またはファイルがダウンロード可能になったときに通知することをお勧めします。 –

関連する問題