Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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
使用PHPExcel填写Excel表格_Php_For Loop_Phpexcel - Fatal编程技术网

使用PHPExcel填写Excel表格

使用PHPExcel填写Excel表格,php,for-loop,phpexcel,Php,For Loop,Phpexcel,我正试图用通过我所做的方法过滤的数据填充我的Excel表格。现在我得到了一张表,但我只有一行,没有另一行,没有得到我通过我的对象提供的数据 我正在尝试我的工作表类似于这张工作表。 我试图在这部分代码中编写代码: public function export($Sets,$disp_filter) { $objPHPExcel = new PHPExcel(); $objPHPExcel->getProperties()->setTitle("Offic excel Test Do

我正试图用通过我所做的方法过滤的数据填充我的Excel表格。现在我得到了一张表,但我只有一行,没有另一行,没有得到我通过我的对象提供的数据

我正在尝试我的工作表类似于这张工作表。

我试图在这部分代码中编写代码:

public function export($Sets,$disp_filter)
{

$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setTitle("Offic excel Test Document");
$styleArray = array(
'font'  => array(
    'bold'  => true,
    'color' => array('rgb' => 'FF0000'),
    'size'  => 10,
    'name'  => 'Verdana'


));
$objPHPExcel->getActiveSheet()->getStyle('A1')->applyFromArray($styleArray);

  $excel_out =  array($this->outputSampleName($Sets));
  // var_dump($excel_out);
  // exit;


    $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Sample Size and Margin of Error');
    $rowCount = 2;


    foreach ($excel_out as  $key=> $line)
    {
          $colCount = 'A';
          $i=0;
          // $line = array($Set['name']);
          // $CT = $Set['crossTabs']['base'];
          // $Moe = array($CT['sample']['moe']);

     foreach($line as  $col_value)
     {
        // var_dump($col_value);
        // exit;
         $objPHPExcel->getActiveSheet()->setCellValue($colCount.$rowCount, $col_value[$i])
         ->getStyle($colCount.$rowCount)->applyFromArray($styleArray);
      $colCount++;
     }
$rowCount++;
$i++;
    }
return $objPHPExcel;

}



protected function outputSampleName($Sets)
{

    foreach ($Sets as $Set)
    {
        $CT = $Set['crossTabs']['base'];
        $line = array(
            $Set['name'],

            $CT['sample']['moe'] . '%'

        );

        $excel_out []= $line;
    }

    return $excel_out;
}
当我通过var\u dump($excel\u out)查看时 我有这样的数据结构:

**请建议我如何以优化的方式获得下一行中的百分比值。 目前,我只能循环浏览该阵列中的样本[name],它们是(狂热者、猎人、新射手等)**
提前感谢

您的变量名和程序结构令人困惑。在function
outputSampleName
中,
$line
对我来说不是一行,而是一个包含两行的列。函数
export
中的
$excel\u out
主要包含一个包含一个元素的数组。因此,您的第一个foreach将只循环一次。在那里,
$行
是由5列数据组成的数组(5)。在第二个foreach中,5个
$col\u值中的每一个都包含一个数组(2),其中包含数据[0]=>文本和[1]=>百分比。但是您只会得到[0]=>文本,因为第一个foreach只会循环一次。谢谢您的建议,但是有没有办法在一对循环中循环使用这两个值。。。我的意思是,在这里,我一次只填一行。如何用百分比值填充第二行。第一步不是将
$this->outputSampleName($Sets)
的结果再次包装到数组中,而是将其原样接受。然后再试一次,试着理解foreach是如何工作的。哦,是的,你是对的。我不能在评论中发布照片,请看下面的帖子。