我正在使用PHPspreadsheet,并且一切正常。但是,当在某天没有人在工作时生成登录表时,我遇到了一个问题,那就是将我的excel模板上的所有条目都不同步。 问题:如何检查循环中的第一个值(StaffName)-如果为空,则用“无人工作”代替,然后中断循环并允许其继续到下一个循环(星期二)。谢谢代码如下:
$sql="SELECT StaffName, MonStart, MonFInish, MonA FROM print_signin_mon
where AreaID= '$AreaID'";
$rsSql=db_query($sql,$conn);
$baseRow = 6;
$r=0;
while ($data2 = db_fetch_array($rsSql)){
$row = $baseRow + $r;
$spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
$spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
->setCellValue('B' . $row, $data2['StaffName'])
->setCellValue('E' . $row, $data2['MonStart'])
->setCellValue('G' . $row, $data2['MonFInish'])
->setCellValue('M' . $row, $data2['MonA']);
$r= $r+1;
}
$spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
答案 0 :(得分:0)
经过反复试验,我设法得到了结果。为了实现我的目标,我将“ IF”从循环中删除,然后添加了它。这样,如果没有数据,则以下内容将运行并添加一行,但是即使有数据,它也始终会添加一行。所以不要按照我的要求去做,即循环检查数据并输入值,然后再继续。但这给了我令人满意的结果。感谢安德鲁的投入。
//Monday
$sql="SELECT StaffName, MonStart, MonFInish, MonA FROM print_signin_mon where AreaID=
'$AreaID'";
$rsSql=db_query($sql,$conn);
$baseRow = 6;
$r=0;
while ($data2 = db_fetch_array($rsSql)){
$row = $baseRow + $r;
$spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
//
$spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
->setCellValue('B' . $row, $data2['StaffName'])
->setCellValue('E' . $row, $data2['MonStart'])
->setCellValue('G' . $row, $data2['MonFInish'])
->setCellValue('M' . $row, $data2['MonA'])
->setCellValue('N' . $row, '..');
$r= $r+1;
}
// $spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
//if (empty($data2['StaffName'])) {
if(empty(array_column($rsSql,'StaffName'))) {
$row = $baseRow + $r;
$spreadsheet->getActiveSheet()->insertNewRowBefore($row, 1);
$spreadsheet->getActiveSheet()->setCellValue('A' . $row, $r + 1)
->setCellValue('B' . $row, '');
//$r++;
$spreadsheet->getActiveSheet()->removeRow($baseRow - 1, 1);
//continue;
}
//END Monday