PHPExcel rows grouping


PHPExcel rows grouping

我有一个一对多的类似数组。

结构示例:

 [
   [
    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了。一个简单的示例或文档参考将作为答案。我自己也找不到。

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

我相信可能有一个解决方案。过去,我使用条件格式"隐藏"了重复的单元格值,例如发票编号,如果 invoiceId 值与上一行的 invoiceId 值匹配,则将前景色/文本颜色设置为背景色......排序后,以前"隐藏"的发票 ID 值可能会变为"未隐藏",而以前"未隐藏"的发票 ID 值可能会变为"隐藏"。这是一个笨拙的解决方案,但我不知道在没有数据透视表的好处的情况下,在 MS Excel 本身中做到这一点的更好方法。

在Excel中,这只能使用数据透视表来完成,如下所示:

  • 包含源数据的工作表,所有行都扩展到"多"部分(例如,将为每一行复制 InvoiceID(;
  • 数据透视表
    • 在"透视字段"列表中,所有列都放置在"行标签"部分中,其他 3 个部分(报表筛选器、值、列标签(中没有列; (可选(只有"多"部分(一对多关系(中的字段才能移动到"值"部分;
    • 右键单击每个字段,字段设置,将"小计"设置为"无">
    • 右键单击每个字段,字段设置,将"布局"设置为"以表格形式显示项目标签">
    • 将"多"部分的所有字段按顺序移动到最后;

上面启用了排序和过滤后粘附行,具有非常漂亮的一对多表示形式(其中许多部分将当前行拆分为子行(。

PHPExcel 还完全不支持数据透视表

("Codeplex:实现数据透视表"(,因此无法使用 PHPExcel 创建、编辑或读取上述 Excel 数据透视表。