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 で並べ替えた後、請求書に属する行がくっつくようにするにはどうすればよいですか?

Excel のアウトライン機能およびグループ化機能と混同しないでください。これらの機能では、並べ替え後に行がくっつきません。

PHPExcelの使い方はすでに知っています。簡単な例またはドキュメントの参照が答えになります。自分では見つけられませんでした。

4

2 に答える 2

1

MSExcel自体でこれにどのようにアプローチするかは完全にはわかりません。

おそらく解決策があると確信しています。以前は、条件付き書式を使用して請求書番号などの重複したセル値を「非表示」にし、invoiceId値が前の行のinvoiceId値と一致する場合は、前景色/テキスト色を背景色に設定しました。 「非表示」のinvoiceId値は「非表示」になり、以前は「非表示」のinvoiceId値は「非表示」になる可能性があります。これは厄介な解決策ですが、ピボットテーブルの利点がなければ、MSExcel自体でそれを行うためのより良い方法はわかりません。

于 2012-05-15T13:04:45.173 に答える
1

Excel では、これは次のようなピボット テーブルを使用してのみ実行できます。

  • すべての行が「多」部分に展開されたソース データを含むワークシート (たとえば、各行に InvoiceID がコピーされます)。
  • ピボットテーブル
    • ピボット フィールド リストでは、すべての列が「行ラベル」セクションに配置され、他の 3 つのセクション (レポート フィルター、値、列ラベル) には列がありません。オプションで、(1 対多の関係の) "多" 部分のフィールドのみを [値] セクションに移動できます。
    • 各フィールドを右クリックし、フィールド設定、「小計」を「なし」に設定
    • 各フィールドを右クリック、フィールド設定、「レイアウト」を「表形式で項目ラベルを表示」に設定
    • すべてのフィールドを「多」の部分から順番が最後になるように移動しました。

上記により、並べ替えとフィルタリング後の行の貼り付けが有効になり、非常に見栄えの良い 1 対多の表現 (多部分が現在の行を子行に分割している) でした。

PHPExcel はまだピボット テーブルをまったくサポートしていないため ( 「Codeplex: ピボット テーブルの実装」 )、PHPExcel を使用して上記の Excel ピボット テーブルを作成、編集、または読み取ることはできません。

于 2012-05-16T12:31:09.830 に答える