web-dev-qa-db-ja.com

PHP Excel-データループ?

データの配列の配列があります。

したがって、基本的な形式は

_$sheet = array(
  array(
    'a1 data',
    'b1 data',
    'c1 data',
    'd1 data',
  ),
  array(
    'a2 data',
    'b2 data',
    'c2 data',
    'd2 data',
  ),
  array(
    'a3 data',
    'b3 data',
    'c3 data',
    'd3 data',
  )
);
_

配列が渡されたとき、列または行がいくつあるかわかりません。私がやりたいのは、php Excelを使用して、配列からExcelシートを作成することです。

私が見てきたことから、データを設定する唯一の方法は$objPHPExcel->getActiveSheet()->setCellValue('A1', $value);を使用することです

だから私の質問は

セルをどのようにループしますか?

_AD70_となる30列と70行が存在する可能性があることを思い出してください。では、どのようにループしますか?

または、配列をシートに変換する組み込み関数はありますか?

18
Hailwood

次のように配列からデータを設定できます。

$objPHPExcel->getActiveSheet()->fromArray($sheet, null, 'A1');

fromArrayは2D配列で動作します。最初の引数が2D配列である場合、2番目の引数はnull値がある場合に使用するものであり、最後の引数は左上隅があるべき場所です。

それ以外の場合は、データをループする必要があります。

$worksheet = $objPHPExcel->getActiveSheet();
foreach($sheet as $row => $columns) {
    foreach($columns as $column => $data) {
        $worksheet->setCellValueByColumnAndRow($column, $row + 1, $data);
    }
}
29
Jacob
$rowID = 1;
foreach($sheet as $rowArray) {
   $columnID = 'A';
   foreach($rowArray as $columnValue) {
      $objPHPExcel->getActiveSheet()->setCellValue($columnID.$rowID, $columnValue);
      $columnID++;
   }
   $rowID++;
}

または

$objPHPExcel->getActiveSheet()->fromArray($sheet);
22
Mark Baker

私の知る限り、PHP Excelを使用してワークシートにデータを入力するときに、最終的なExcelワークシートの高さと幅を知る必要はありません。ネストされたforeachループを使用してすべてを読み取ることができます。ネストされた配列と適切な変数を使用してセル参照を作成し、ワークシートに追加します。プラグインがサイズを処理します。

0
Rasika