У меня есть начало очень рудиментарного таблица поворота, построенного с Epplus. Я пытаюсь получить «классическую макет таблицы стержней» для правильной работы.using System;
using System.Data;
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.Table;
using OfficeOpenXml.Table.PivotTable;
namespace EppTrial
{
class Program
{
static void Main(string[] args)
{
byte[] workbookBytes;
using (var p = new ExcelPackage())
{
var sheet = p.Workbook.Worksheets.Add("DataSheet");
var filledRange = sheet.Cells["A1"].LoadFromDataTable(GetDataTable(), true, TableStyles.Dark1);
sheet.Cells["E"].Style.Numberformat.Format = "d MMM";
filledRange.AutoFitColumns();
var pivotSheet = p.Workbook.Worksheets.Add("PivotSheet");
var pivotTable = pivotSheet.PivotTables.Add(pivotSheet.Cells["A3"], filledRange, "ThePivotTableName");
pivotTable.ColumnGrandTotals = true;
pivotTable.Compact = false;
pivotTable.CompactData = false;
pivotTable.DataCaption = "Values";
pivotTable.DataOnRows = false;
pivotTable.ErrorCaption = "[error]";
pivotTable.GridDropZones = true;
pivotTable.Outline = false;
pivotTable.OutlineData = false;
pivotTable.RowGrandTotals = true;
pivotTable.ShowColumnHeaders = true;
pivotTable.ShowError = true;
pivotTable.ShowHeaders = true;
pivotTable.ShowMemberPropertyTips = false;
pivotTable.ShowValuesRow = false;
foreach (string fieldName in new []{ "R1-Res", "R2-Proj" })
{
var field = pivotTable.Fields[fieldName];
field.Outline = false;
field.Compact = false;
field.SubTotalFunctions = eSubTotalFunctions.None;
field = pivotTable.RowFields.Add(field);
field.ShowDropDowns = true;
field.Items.Refresh();
}
workbookBytes = p.GetAsByteArray();
}
File.WriteAllBytes(@"C:\Users\me\Desktop\EPP\trial.xlsx", workbookBytes);
}
public static DataTable GetDataTable()
{
// Named Table
var table = new DataTable("DataTable");
// Columns
table.Columns.Add("F1-Client", typeof(string));
table.Columns.Add("F2-Eng", typeof(string));
table.Columns.Add("R1-Res", typeof(string));
table.Columns.Add("R2-Proj", typeof(string));
table.Columns.Add("C1-Date", typeof(DateTime));
table.Columns.Add("C2-Type", typeof(string));
table.Columns.Add("V1-Hours", typeof(int));
table.Columns.Add("V2-Rev", typeof(double));
// Rows
table.Rows.Add("GM", "Design", "Joe", "Buick", new DateTime(2024, 9, 1), "Act", 8, 100);
table.Rows.Add("GM", "Design", "Joe", "Buick", new DateTime(2024, 10, 1), "Act", 6, 80);
table.Rows.Add("GM", "Design", "Mary", "Buick", new DateTime(2024, 9, 2), "Act", 4, 50);
table.Rows.Add("GM", "Design", "Mary", "Buick", new DateTime(2024, 10, 2), "Act", 6, 75);
table.Rows.Add("GM", "Design", "Joe", "Chevy", new DateTime(2024, 9, 2), "Act", 7, 90);
table.Rows.Add("GM", "Design", "Mary", "Chevy", new DateTime(2024, 10, 3), "Act", 4, 40);
table.Rows.Add("GM", "Build", "Joe", "Chevy", new DateTime(2024, 8, 1), "Act", 10, 200);
table.Rows.Add("Ford", "Build", "Mary", "Ranger", new DateTime(2024, 8, 2), "Act", 10, 250);
table.Rows.Add("Ford", "Design", "Joe", "Ranger", new DateTime(2024, 7, 1), "Act", 5, 150);
return table;
}
}
}
< /code>
Когда я открываю полученный файл в Excel и перейду на лист pivotsheet, я вижу следующее: < /p>
Обратите внимание на неправильную метку в A4 и пропавшие раскрывающийся виджет в B4. < /p>
Теперь в Excel я могу просматривать вкладку «Дисплей» параметров таблицы Pivot - Снимок экрана следует: < /p>
< img alt = "Введите описание изображения здесь" src = "https://i.sstatic.net/y6ggyax7.png"/>
, если я сейчас не проверю выбранные «Классический макет таблицы таблицы» и нажмите OK, чтобы сохранить изменения, а затем повторно открыть ту же вкладку дисплея с параметрами таблицы Pivot и заменить ту же самую опцию «Классический макет таблицы сводки», который у меня был ранее непревзойден Таблица Pivot выглядит и ведет себя правильно:
Любые предложения о том, как я могу изменить свой код, чтобы эта часть поворотной таблицы было правильно повредит как правильный метка столбца строки, так и правильный (работающий) выпадающий виджет?
Подробнее здесь: https://stackoverflow.com/questions/791 ... operly-out
Как получить классический макет таблицы поворота, сгенерированный в Epplus, чтобы правильно работать «из коробки»? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение