ピボットテーブルを作成するために、次の EPPlus コードを取得しました。
private void AddPivotTable()
{
string colAlphaRowNum = string.Format("A{0}", locationWorksheet.Dimension.End.Row+5);
ExcelAddressBase eab = locationWorksheet.Cells[colAlphaRowNum];
ExcelRangeBase erb = locationWorksheet.Cells[6, 1, locationWorksheet.Dimension.End.Row, locationWorksheet.Dimension.End.Column];
var pt = locationWorksheet.PivotTables.Add(eab, erb, "Pivotous");
pt.MultipleFieldFilters = true;
pt.RowGrandTotals = true;
pt.ColumGrandTotals = true;
pt.Compact = true;
pt.CompactData = true;
pt.GridDropZones = false;
pt.Outline = false;
pt.OutlineData = false;
pt.ShowError = true;
pt.ErrorCaption = "[error]";
pt.ShowHeaders = true;
pt.UseAutoFormatting = true;
pt.ApplyWidthHeightFormats = true;
pt.ShowDrill = true;
pt.DataOnRows = false;
pt.FirstHeaderRow = 1; // first row has headers
pt.FirstDataCol = 1; // first col of data
pt.FirstDataRow = 2; // first row of data
pt.TableStyle = TableStyles.Medium6; // There is a "custom" and several Dark, Light, and Medium options
}
これはちょっとうまくいきます。私はシートでこれを取得します:
次に、シートの NE コーナーにある「ピボットテーブル フィールド リスト」で使用可能な 6 つのフィールドすべてを (手動で) 選択すると、ピボットテーブルの外観が次のように変わります。
ユーザーはそれを「いじる」ことができるので、これはかなり良いことです - 各フィールドで利用可能なデータのサブセットを選択します。しかし、ユーザーがフィールドを手動で選択する必要があるのではなく、ピボットテーブルをこの状態で開始したいと考えています。
そんなことがあるものか?
注: 私は Excel Interop で同様の問題を抱えていましたが、それとは対照的に、EPPlus を使用すると「物事」がはるかに簡単になることがわかりました。それでも、プログラムでフィールドを選択するのは難しいようです...