簡體   English   中英

PHPExcel中如何按字段對行進行分組

[英]How grouping rows by field in PHPExcel

在這里查看圖片

使用 phpExcel 庫創建 excel 文件時遇到問題。

我想根據銷售列(具有相同的銷售名稱)在某些行上創建組。

我通過使用 Excel 中“數據”選項卡上的“小計”功能手動制作了該文件。

phpexcel有沒有可能有這樣的功能?

您可以在我上傳的鏈接/圖像上看到我的意思的示例文件。

您可以像這樣對行進行分組

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

有關更多詳細信息,您可以訪問這里 你也可以去這里這里查看工作示例

使用 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 應該具有不同的 value ,因此當嘗試在數組中插入時,請驗證 $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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM