2012-05-13 21 views
1

私は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 
] 

どのようにExcelで並べ替えた後、請求書に属している行が一緒に固執するようPHPExcelを使用して、私はグループ行できますか?

Excelのアウトライン機能とグループ化機能と混同しないでください。ソート後に行がつながってしまうことはありません。

私は既にPHPExcelの使い方を知っています。簡単な例またはドキュメント参照が答えとして行います。私は自分自身を見つけることができませんでした。

答えて

1
これが唯一のこのようなピボットテーブルを使用して行うことができるExcelで

:すべての行が(例えばInvoiceIDが行ごとにコピーされることになる)、「多くの」部分を拡大して、ソースデータと

  • ワークシート。
  • ピボットテーブルピボットフィールドリスト内
    • 、すべての列は、他の3つのセクションでない列(レポートフィルタ、値、列ラベル)と、「行ラベル」セクションに配置されています。オプションで、(1対多の関係の)「多くの」部分のフィールドのみを「値」セクションに移動できます。
    • は、右の各フィールド、フィールドの設定、設定された「小計」をクリックし、「なし」へ
    • からすべてのフィールドを移動し、各フィールド、フィールドの設定、設定された「レイアウト」と「表形式で表示するアイテム・ラベル」をクリック"多くの"部分が最後になるようにする。

(多くの部分が子行に現在の行を分割された)本当に見栄えの1対多の表現で、ソートともフィルタリング後の行の上で有効になって付着。

PHPExcelはまだピボットテーブルをサポートしていません("Codeplex: Implement pivot tables")。したがって、上記のExcelピボットテーブルは、PHPExcelを使用して作成、編集、または読み込むことはできません。

+0

私が知っているピボットテーブルのサポートは、 "やるべきこと"のリストにあります。いつでも)制約がある...うまくいけば年末までには、このインスタンスでは遅すぎる –

+1

PHPExcelの主な開発者であることに気づいた。最高のExcel形式のリーダー/ライターをありがとう、それをオープンソースにしてくれてありがとう:) –

1

私はMS Excel自体でこれをどのように近づけるのかは完全にはわかりません。

おそらく解決策があると思います。以前は、条件付き書式を使用して請求書番号などの複製されたセルの値を隠していました。前の行のinvoiceIdの値と一致する場合は、前景色/テキストの色を背景色に設定します。 「隠された」invoiceId値は「非表示」になり、以前は「非表示」のinvoiceId値は「非表示」になることがあります。それはkludgyソリューションですが、私はピボットテーブルの恩恵なしに、MS Excel自体でそれを行うためのより良い方法を知らない。

+0

私は同じ繰り返し値を隠すことを考えていました。しかし、私は何かをクリーナー(VBA無し、エラーや不正な形式のスタイリングのリスクなし)を目指しています。ピボットテーブルが非常に多くのシートに広がってしまいます。 –

+0

もう少し勉強した後、私はあなたに同意します。ピボットテーブルだけが実行可能な解決策です:(。 –