PHPExcel如何dynamic设置单元格的值

如何使用PHPExcel库dynamic设置单元格/列值?

我从MySQL数据库中获取结果集,我想用ExcelExcel库以excel格式写数据。 看例子

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

表示我们必须将单元格/列引用硬编码为'A1',然后写入单元格/列A1。 如何根据结果集中的行和相应列值来增加单元格/列和/或行引用?

请指导。

我假设你已经连接到你的数据库了。

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

我没有太多的使用PHP的经验,但从逻辑的angular度来看,这是我会做的。

  1. 循环访问MySQL的结果集
  2. 在Excel中,您应该已经知道A,B,C应该是什么,因为这些是列,您知道有多less列正在返回。
  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); }