Mysql phpexcel-如何从数组的循环中的resultset获取所有值
我不知道如何从mysql结果集中获取所有数据(行和列)。 使用此代码,我无法从my query中获取所有行:Mysql phpexcel-如何从数组的循环中的resultset获取所有值,mysql,phpexcel,phpactiverecord,Mysql,Phpexcel,Phpactiverecord,我不知道如何从mysql结果集中获取所有数据(行和列)。 使用此代码,我无法从my query中获取所有行: $row=1; $column = 'A'; $sql = "SELECT distinct c.code, p.gestion"; for ($i = 1; $i <= count($steps); $i++) { $sql .= " ,(SELECT IFNULL(ROUND(SUM(c".$i.".`delta`),1),'')
$row=1;
$column = 'A';
$sql = "SELECT distinct c.code, p.gestion";
for ($i = 1; $i <= count($steps); $i++) {
$sql .= "
,(SELECT IFNULL(ROUND(SUM(c".$i.".`delta`),1),'')
FROM charge c".$i.", totalgestion p".$i."
WHERE c".$i.".code = p.code
AND c".$i.".steps = ".$i."
AND c".$i.".actif = 1) as delta".$i.",'' as comments".$i.",
(SELECT IFNULL(ROUND(SUM(c".$i.".`values`),1),'')
FROM charges c".$i.", totalgestion p".$i."
WHERE c".$i.".code = p".$i.".code
AND c".$i.".year = ".$year."
AND c".$i.".steps = ".$i." "
AND c".$i.".actif = 1) as total".$i." ";
;
}
$sql .= "
FROM charges c, totalgestion p
WHERE c.code = p.code
AND c.annee = ".$year."
AND c.type = 1
";
$totalvalues = RefTable::find_by_sql($sql);
foreach ($totalvalues as $totalvalue) {
$Code = $totalvalue->code;
$Gestion = $totalvalue->gestion;
for ($i = 1; $i <= count($etapes); $i++){
$Del = 'delta'.$i;
$Com = 'comments'.$i;
$Tot = 'total'.$i;
$Delta = $totalvalue->$Del;
$Comments = $totalvalue->$Com;
$Total = $totalvalue->$Tot;
}
$datas=array($Code,$Gestion,$Delta,$Comment,$Montant);
$objPHPExcel->getActiveSheet()->fromArray($datas, null, $column . $row);
$objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFill()->getStartColor()->setRGB('3F6E89');
$objPHPExcel->getActiveSheet()->getStyle($column . $row)->getFont()->getColor()->setRGB('FFFFFF');
$row++;
}
$row=1;
$column='A';
$sql=“选择不同的c.code,p.gestion”;
对于($i=1;$i您可以链接更多setCellValue
$column_init = 67; // equals C in ascii
$columns = [];
for ($i = 0; $i < count($steps) * 3; $i++) {
$columns[] = $column_init + $i;
}
$values = [];
foreach ($totalvalues as $totalvalue) {
$totalvalue = (array)$totalvalue;
for ($j = 0; $j < count($steps); $j++) {
$values[] = $totalvalue['delta' . $j];
$values[] = $totalvalue['comments' . $j];
$values[] = $totalvalue['total' . $j];
}
for ($i = 0; $i < count($columns); $i++) {
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($columns[chr($i)] . $row, $values[$i]);
}
$row++;
}
$column_init=67;//等于ascii中的C
$columns=[];
对于($i=0;$i<计数($steps)*3;$i++){
$columns[]=$column_init+$i;
}
$values=[];
foreach($totalvalues作为$totalvalues){
$totalvalue=(数组)$totalvalue;
对于($j=0;$jsetActiveSheetIndex(0)->setCellValue($columns[chr($i)]。$row,$values[$i]);
}
$row++;
}
您好,谢谢您的回答。您的示例对已知列很有效,但如何获取“for循环”中的其他列?我在前两列(“code”和“gestion”)之后获取最少3列,但也可以是6列。这些列是“delta”、“comments”和“total”。如何在foreach中为这些最少3列循环?我希望这是可以理解的,抱歉我的英语不好。使用fromArray()
而不是setCellValue()
会更容易,删除for()
loop我已经更改了第二张图片。在我得到循环中的三列后,前两列(A和B)在循环之外,因此在图片中我们看到三列两次(C、D、E和F、G、H)。嗨,马克,我尝试了fromArray(),但我得到:“致命错误:无法将RefTable类型的对象用作数组”。我想我不知道如何将值放入数组中。@achillix我再次编辑了我的答案。这是一种笨拙的方法,但我认为它会起作用。