如何在PHPExcel中按字段分组行

时间:2019-04-04 09:16:27

标签: php excel phpexcel

see images here

使用phpExcel库创建excel文件时遇到问题。

我想基于销售列(具有相同的销售名称)在某些行上创建组。

我已使用Excel中“数据”选项卡上的“小计”功能手动制作了文件。

phpexcel是否可能具有这种功能?

您可以在我上传的链接/图像上看到我所指的示例文件。

非常感谢您。

2 个答案:

答案 0 :(得分:0)

您可以像这样将行分组

$objPHPExcel->getActiveSheet()->getRowDimension('5')->setOutlineLevel(1);

有关更多详细信息,您可以访问here。 您也可以转到herehere来查看工作示例

答案 1 :(得分:0)

使用PHPExcel,您可以使用以下方法:

  • setOutlineLevel($ level)//当前行的级别
  • setVisible(false)//显示或隐藏组
  • setCollapsed(true)//将折叠添加到组中(如上图所示)

这里要点是定义组条件,例如:

  

我们假设excel文件已经使用PHPExcel和   现在,您将再次读取文件以对行进行分组。

首先让我们阅读包含推销员姓名的C列,并将其存储在 $ salemans 中:

$salesmans = array(); 

/*
the output of $salesmans seems to be something like :
[0] ==> "Abdul Karim",
[1] ==> "Apan Total",
[2] ==> ""Ari Total
*/
  

数组$ salesman应该具有不同的值,因此在尝试   在数组中插入验证当前值是否不存在   已经在$ salesmans中了。

示例:

$salesmans=array();
if (!in_array($currentSalesman, $salesmans))
{
   $array[] = $value; 
}

在这里,我们将通过使用$ salesmans中的键获取当前业务员的值来设置每行的级别

  

警告:请尝试修改此部分,因为我没有得到   您如何管理提取行。我只是让代码更清晰易懂

for ($row = 0; $row <= 10000; ++$row) { 
    $currentsalesman = $row['c']; // 
    $keylevel = array_search($currentsalesman, $salesmans);// this will return the key in $salesmans array
    $objPHPExcel->getActiveSheet()
        ->getRowDimension($row)
            ->setOutlineLevel($keylevel) // set here the level .
            ->setVisible(false)
            ->setCollapsed(true);
}