2012-02-09 13 views
4

Excelは、メニューData - >Outline - >Subtotalから小計オプションを提供します。自動的にサブサムとデータをフォールドする可能性が作成されます。下の画像は、アクションがシートをどのように変換するかを示しています。Excelの小計機能を実装する

enter image description here

そして、これは私がPOIを経由して行う必要が正確に何です。私はセルに小計関数を設定する方法を知っているので、自分で中間合計を計算することができます。しかし、この折り畳みを左の枠でどのように有効にするのですか?

私はgroupRow()メソッドがあることを認識しましたが、それらのネストされたグループは、必要なように機能しません。私は次のコードを使用する場合、私は2つのグループを取得します。 1つの大きな(1-7)と(1-3)。グループ(5-7)がなくなり、通話の順序を変更しても効果はありません。

sheet.groupRow(1, 7); 
sheet.groupRow(1, 3); 
sheet.groupRow(5, 7); 

答えて

3

私はPOIのかなり古いverionを使用しますが、これは私がそれをやった方法です:
私はインデントレベルが同様に格納されていた行のためのモデルを持っていたので、私はまた、複数のネストされたグループを必要に応じて(それがありましたインデントが暗黙的であるようなツリー)。訪問者と一緒にモデルをたどって、グループの開始と終了の行番号を取得しました。その後、各グループに対してHSSFSheet.groupRowと呼ばれます。正しく覚えていれば、グループ通話の順序が重要です。

+0

でしたいくつかのコードを投稿しますか?私はまだそれらの入れ子になったグループを働かせません。 – Kai

+0

ここに行く:http://pastebin.com/iFkUFX3qこれは文脈から外につかまったが、私はそれがまだ理解できることを望む。そうでなければ、私はもっとペーストします。グループとグループOHは異なる構造で同じことをするので、そのうちの1つで十分です。 – zeller

+0

とにかく、あなたがそれをグループ化したすべての行番号をログに記録して世代を動かすのに役立つと思うなら、シートのスクリーンショットのどこかにあります。 – zeller

関連する問題