1

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

结构示例:

 [
   [
    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 中排序后,属于 Invoice 的行会粘在一起?

不要与 Excel 大纲和分组功能混淆,因为这些功能在排序后不会粘在一起。

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

4

2 回答 2

1

我不完全确定我将如何在 MS Excel 本身中处理这个问题。

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

于 2012-05-15T13:04:45.173 回答
1

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

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

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

PHPExcel 根本不支持数据透视表(“Codeplex:实现数据透视表”),因此无法使用 PHPExcel 创建、编辑或读取上述 Excel 数据透视表。

于 2012-05-16T12:31:09.830 回答