type setcellvaluebycolumnandrow setcellvalue numberformat getstyle getcell getactivesheet column applyfromarray and php excel-2003 export-to-excel phpexcel

numberformat - setcellvaluebycolumnandrow phpexcel



PHPExcel cómo establecer el valor de la celda dinámicamente (2)

¿Cómo establecer dinámicamente el valor de celda / columna usando la biblioteca PHPExcel?

Estoy obteniendo el conjunto de resultados de la base de datos MySQL y quiero escribir datos en formato excel usando la biblioteca PHPExcel. Mirando el ejemplo

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

indica que tenemos que codificar la referencia de celda / columna como ''A1'', luego se escribe en la celda / columna A1. ¿Cómo puedo incrementar la referencia de celda / columna y / o fila según las filas y los valores de columna correspondientes del conjunto de resultados?

Por favor guia


No tengo mucha experiencia trabajando con php pero desde un punto de vista lógico esto es lo que haría.

  1. Recorra su conjunto de resultados de MySQL
  2. En Excel, ya debe saber qué deben ser A, B, C porque esas son las columnas y usted sabe cuántas columnas está devolviendo.
  3. El número de fila solo puede incrementarse con cada vez que pasa por el bucle.

A continuación se muestra un pseudocódigo que ilustra esta técnica:

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


Supongo que ya se ha conectado a su base de datos.

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