Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql phpexcel-如何从数组的循环中的resultset获取所有值_Mysql_Phpexcel_Phpactiverecord - Fatal编程技术网

Mysql phpexcel-如何从数组的循环中的resultset获取所有值

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),'')

我不知道如何从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),'')
            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我再次编辑了我的答案。这是一种笨拙的方法,但我认为它会起作用。