50

PHPExcelライブラリを使用してセル/列の値を動的に設定するにはどうすればよいですか?

MySQLデータベースから結果セットをフェッチしていて、PHPExcelライブラリを使用してExcel形式でデータを書き込みたい。例を見て

$objPHPExcel->getActiveSheet()->setCellValue('A1', 'cell value here');

セル/列参照を「A1」としてハードコーディングする必要があることを示し、セル/列A1に書き込みます。結果セットの行と対応する列の値に基づいて、セル/列や行の参照をインクリメントするにはどうすればよいですか?

ご案内ください。

4

2 に答える 2

118

すでにデータベースに接続していると思います。

$sql = "SELECT * FROM my_table";
$result = mysql_query($sql);

$row = 1; // 1-based index
while($row_data = mysql_fetch_assoc($result)) {
    $col = 0;
    foreach($row_data as $key=>$value) {
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
        $col++;
    }
    $row++;
}
于 2010-04-06T13:44:10.483 に答える
6

私はphpを使った経験はあまりありませんが、ロジックの観点からはこれを行います。

  1. MySQLからの結果セットをループします
  2. Excelでは、A、B、Cが列であり、返される列の数がわかっているため、A、B、Cがどうあるべきかをすでに知っている必要があります。
  3. 行番号は、ループを通過するたびにインクリメントできます。

以下は、この手法を説明するいくつかの擬似コードです。

    for (int i = 0; i < MySQLResults.count; i++){
         $objPHPExcel->getActiveSheet()->setCellValue('A' . (string)(i + 1), MySQLResults[i].name); 
        // Add 1 to i because Excel Rows start at 1, not 0, so row will always be one off
         $objPHPExcel->getActiveSheet()->setCellValue('B' . (string)(i + 1), MySQLResults[i].number);
         $objPHPExcel->getActiveSheet()->setCellValue('C' . (string)(i + 1), MySQLResults[i].email);
    }
于 2010-04-06T13:16:58.050 に答える