我有一个一对多的类似数组。
结构示例:
[
[
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 数据透视表。