it-swarm.com.de

PHPExcel wie man den Zellenwert dynamisch einstellt

Wie setze ich Zellen-/Spaltenwerte dynamisch mit der PHPExcel-Bibliothek?

Ich rufe eine Ergebnismenge aus der MySQL-Datenbank ab und möchte mit der PHPExcel-Bibliothek Daten im Excel-Format schreiben. Ein Beispiel ansehen

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

gibt an, dass die Zellen-/Spaltenreferenz fest codiert werden muss. Als 'A1' wird in die Zelle/Spalte A1 geschrieben. Wie kann ich die Zell-/Spalten- und/oder Zeilenreferenz basierend auf Zeilen und entsprechenden Spaltenwerten aus der Ergebnismenge erhöhen?

Bitte führen.

47
Asif

Ich gehe davon aus, dass Sie bereits eine Verbindung zu Ihrer Datenbank hergestellt haben.

$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++;
}
114
Ivo Sabev

Ich habe nicht viel Erfahrung in der Arbeit mit PHP, aber logisch gesehen ist dies das, was ich tun würde.

  1. Durchlaufen Sie Ihre Ergebnismenge von MySQL
  2. In Excel sollten Sie bereits wissen, was A, B, C sein sollte, da dies die Spalten sind und Sie wissen, wie viele Spalten Sie zurückgeben.
  3. Die Zeilennummer kann jedes Mal durch die Schleife erhöht werden.

Nachfolgend finden Sie einige Pseudocodes, die diese Technik veranschaulichen:

    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);
    }
6
Jon