2012-05-13 20 views
1

我有一個一對多的數組。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 I組行,使得在Excel排序後,屬於發票的行會粘在一起?

不要與Excel概述和分組功能混淆,因爲排序後行不會粘在一起。

我已經知道如何使用PHPExcel。一個簡單的例子或文檔參考將作爲答案。我自己找不到一個。

回答

1

在Excel這隻能通過使用透視表這樣來完成:

  • 工作表與源數據,與所有的行擴展到「多」部分(例如InvoiceID將被複制的每一行);
  • 樞軸表
      在樞軸字段列表
    • ,所有列都置於「行標籤」部分,與其它3個部分沒有列(報表過濾,設置值,列標籤);可選地,只有「許多」部分(一對多關係)中的字段可以移動到值部分;
    • 右點擊每個字段,字段設置,將「小計」到「無」
    • 右點擊每個字段,字段設置,設置「佈局」,以「展項標籤以表格的形式」
    • 移動所有字段「多」部分依次排列;

行的排序和過濾也與一個非常好看的一個一對多代表(其中許多部分被劃分當前行到子行)後,上述啓用癥結。

PHPExcel根本不支持數據透視表("Codeplex: Implement pivot tables"),所以無法使用PHPExcel創建,編輯或讀取上述Excel數據透視表。

+0

我知道,支持數據透視表是在「待辦事項」列表上(而且優先級相當高),但時間總是)是約束條件...希望在年底之前,但在這種情況下會太遲 –

+1

我剛剛注意到你是PHPExcel的主要開發人員,謝謝你最好的Excel格式讀寫器,並感謝你讓它開源:) –

1

我不完全確定我會如何在MS Excel本身接近這一點。

我確定可能有解決方案。在過去,如果invoiceId值與前一行的invoiceId值相匹配,則使用條件格式「隱藏」重複的單元格值(如發票號碼),將前景/文本顏色設置爲背景顏色。 「hidden」invoiceId值可能會變成「unhidden」,而之前「unhidden」的invoiceId值可能會變爲「隱藏」。這是一個可笑的解決方案,但我不知道在MS Excel本身中使用它的更好方式,而沒有數據透視表的好處。

+0

我正在考慮隱藏相同的重複值。不過,我的目標是更乾淨(沒有VBA,沒有錯誤或畸形樣式的風險)。數據透視表會散佈在太多的表上。 –

+0

在學習了一些之後,我同意你的觀點,只有數據透視表是一個可行的解決方案:(。 –