解决方案 »

  1.   

    for($m_k=0,$column_num0='A';$m_k<$column_max,$column_num0<'ZZ';$column_num0++,$m_k++)
    {
    //$objectPHPExcel->getActiveSheet()->getColumnDimension($column_num0)->setWidth(10);
    //$objectPHPExcel->setActiveSheetIndex(0)->setCellValue($column_num0.'1',$m_arr[$m_k]);
    //$objectPHPExcel->getActiveSheet()->getStyle((string)($column_num0.'1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    }
    for($key_num=0;$key_num<$row_max;$key_num++)
    {
    $row_num=$key_num+2; //数组的索引是行号-2
    $avar_arr=array_filter(explode('|',$data[$key_num]['avar']));
    $answer_arr=array_filter(explode('|',$data[$key_num]['aanswer']));
    $d_arr=array_combine($avar_arr,$answer_arr);

    foreach($d_arr as $k=>$v)
    {
    foreach($m_arr as $k1=>$v1)
    {
    if(!isset($d_arr[$v1]))
    {
    $d_arr[$v1]=' ';
    }
    }
    }
    ksort($d_arr);

    $d_arr=array_values($d_arr);
    for($column_num='A',$column_num2=1;$column_num<'ZZ',$column_num2<301;$column_num++,$column_num2++)
    {
    foreach($d_arr as $k=>$v)
    {
    if($k==($column_num2-1))
    {
    $objectPHPExcel->getActiveSheet()->setCellValue($column_num.$row_num,$v);
    $objectPHPExcel->getActiveSheet()->getStyle((string)($column_num.$row_num))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    }
    }
    }
    }

    header('Content-Type: application/vnd.ms-excel');  
    header('Content-Disposition: attachment;filename="'.date('Ymd-His').'.xls"');  
    header('Cache-Control: max-age=0');  
      
    $objWriter = PHPExcel_IOFactory::createWriter($objectPHPExcel, 'Excel5');  
    $objWriter->save('php://output'); 
      

  2.   


    第一个for循环是设置第一行的值
    第二个for循环是设置第二,三,四...行的值
    这样导出只有第一行是有值的,第二,三,四...行没有值。
    如果注释掉第一个for循环,第二,三,四...行就有值了。
    该怎么解决呢?