PHPExcel行分组

时间:2012-05-13 17:44:46

标签: php phpexcel

我有一对多的数组。

结构示例:

 [
   [
    InvoiceID,
    [
      InvoiceEntry1_label,
      InvoiceEntry2_label
    ],
    [
      InvoiceEntry1_value,
      InvoiceEntry2_value
    ],
    Total
   ],
   [
    InvoiceID,
    [
      InvoiceEntry1_label,
      InvoiceEntry2_label
    ],
    [
      InvoiceEntry1_value,
      InvoiceEntry2_value
    ],
    Total
   ],
   and so on
 ]

如何使用PHPExcel对行进行分组,以便在Excel中排序后,属于发票的行会粘在一起?

不要与Excel概述和分组功能混淆,排序后哪些行不会粘在一起。

我已经知道如何使用PHPExcel。一个简单的示例或文档参考将作为答案。我自己找不到一个。

2 个答案:

答案 0 :(得分:1)

我不完全确定如何在MS Excel本身中解决这个问题。

我确信可能有解决方案。在过去,我使用条件格式“隐藏”了重复的单元格值,例如发票编号,如果invoiceId值与上一行的invoiceId值匹配,则将前景/文本颜色设置为背景颜色...然后,“隐藏的”invoiceId值可以变为“未隐藏”,并且先前“未隐藏”的invoiceId值可以变为“隐藏”。这是一个kludgy解决方案,但我不知道在MS Excel本身做更好的方法,没有数据透视表的好处。

答案 1 :(得分:1)

在Excel中,只能使用像这样的数据透视表来完成:

  • 包含源数据的工作表,所有行都展开为“多”部分(例如,每行都会复制InvoiceID);
  • 数据透视表
      在数据透视字段列表中,所有列都放在“行标签”部分中,其他3个部分中没有列(报表过滤器,值,列标签);可选地,只有“多”部分(一对多关系)中的字段可以移动到值部分;
    • 右键单击每个字段,字段设置,将“Subtotals”设置为“none”
    • 右键单击每个字段,字段设置,将“布局”设置为“以表格形式显示项目标签”
    • 将“many”部分中的所有字段按顺序移动到最后;

上面在排序和过滤之后启用了行的粘贴,具有非常好看的一对多表示(其中许多部分将当前行拆分为子行)。

PHPExcel根本不支持数据透视表("Codeplex: Implement pivot tables"),因此无法使用PHPExcel创建,编辑或读取上述Excel数据透视表。