2010-04-06 29 views
45

Jak dynamicznie ustawić wartość komórki/kolumny za pomocą biblioteki PHPExcel?PHPExcel jak dynamicznie ustawić wartość komórki

Pobierz zestaw wyników z bazy danych MySQL i chcę zapisać dane w formacie programu Excel przy użyciu biblioteki PHPExcel. Patrząc na przykład

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

wskazuje, że musimy do twardego kodu odwołanie do komórki/kolumny Jako "A1", to zapisuje do komórki/kolumny A1. Jak mogę zwiększyć odwołanie do komórki/kolumny i/lub wiersza na podstawie wierszy i odpowiednich wartości kolumn z zestawu wyników?

Proszę przewodnika.

Odpowiedz

108

I asume podłączeniu do bazy danych już.

$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++; 
} 
+0

Dzięki Ivo Sabev. – Asif

+0

Nie ma za co. –

+6

Notatka z instrukcji: Indeks kolumny PHPExcel ma wartość 0, a indeks wiersza ma wartość 1. Oznacza to, że 'A1' ~ (0,1) –

5

Nie mam dużego doświadczenia w pracy z php, ale z logicznego punktu widzenia to właśnie bym zrobił.

  1. Loop pośrednictwem wyniku ustawiony z MySQL
  2. W programie Excel powinieneś już wiedzieć, co A, B, C powinno być, bo to są kolumny i wiesz, ile kolumn wracasz.
  3. Numer wiersza może być zwiększany za każdym razem w pętli.

Poniżej niektóre pseudokod ilustrujący tę technikę:

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); 
    } 
+0

Wyniki mogą nie być jedno do jednego, ale wiele wierszy danych zapisanych w kolumnach, które wymagają pętli do przechodzenia między kolumnami. –

Powiązane problemy