6

誰もこれを行う方法を知っていますか?

私は .Net で EPPlus を使用しており、2 つの行フィールドと 1 つの集計データフィールドを持つピボット テーブルを作成しました。

Dim Pivot As OfficeOpenXml.Table.PivotTable.ExcelPivotTable
Pivot = wksPivot.PivotTables.Add(wksPivot.Cells("A1"), Datarange, "pName")

Pivot.RowFields.Add(Pivot.Fields("Fld1")).Sort = Table.PivotTable.eSortType.Ascending
Pivot.RowFields.Add(Pivot.Fields("Fld2")).Sort = Table.PivotTable.eSortType.Ascending

Dim dtaFld As OfficeOpenXml.Table.PivotTable.ExcelPivotTableDataField
dtaFld = Pivot.DataFields.Add(Pivot.Fields("XYZ"))
dtaFld.Function = Table.PivotTable.DataFieldFunctions.Sum

すべてうまく機能しますが、ユーザーがワークブックを開いたときにピボット テーブルを折りたたんだ状態で開始したいと考えています (Excel では、ピボット テーブルを作成するときに、データ要素を右クリックして [展開/折りたたみ] を選択できます)。 " > "フィールド全体を折りたたむ"

コードでこれを行うことができますか?? (そして、EPPlus がまだこれをサポートしていない場合は、直接 OpenXML を使用するつもりです...)

また、ワークブックから生データを削除して、ピボット テーブルがまだ機能するようにする方法はありますか? 試してみましたが、ワークブックを開くと、ピボット テーブルが空白になりますか? -私の現在の論理は、この質問に私を導きました...何か考えはありますか??

(私はこの質問を VB で書いたことを知っていますが、この質問にC#&VBタグの両方を追加しました - どちらの言語のコードにも慣れています - ありがとう!!)

4

2 に答える 2

-1

EPPlus を使用すると、次のようなことを試すことができます (この SO 投稿から取得):

(from pf in pivot.Fields
 select pf).ToList().ForEach(f =>
 {
     f.Compact = false;
     f.Outline = false;
 });

あるいは、もっと簡単に言えば、次のようなものは機能しませんか?

pvtTable.Compact = False
pvtTable.CompactData = False
pvtTable.Outline = False
pvtTable.OutlineData = False
pvtTable.ShowDrill = True

また、Excel が「物事」をどのように達成するかを確認するための優れたリバース エンジニア メソッドを詳述しているこの SO 投稿も参照してください。

PS 申し訳ありませんが、他の「また」の質問についてはお手伝いできません。

于 2013-05-07T15:10:00.390 に答える