如何在PHPExcel中按字段对行进行分组

问题描述 投票:0回答:2

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

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

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

phpexcel有可能具有这样的功能吗?

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

非常感谢你。

php excel phpexcel
2个回答
0
投票

您可以像这样对行进行分组

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

有关详细信息,请访问here。你也可以去herehere作为工作实例


0
投票

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

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

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

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

首先让我们阅读包含销售员名称的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);
}
© www.soinside.com 2019 - 2024. All rights reserved.