У меня есть ОЧЕНЬ элементарная сводная таблица, созданная с помощью 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;
}
}
}
Когда я открываю полученный файл в Excel и перехожу к листу сводной таблицы, я вижу следующее:
Обратите внимание на неправильную метку в A4 и отсутствующий виджет раскрывающегося списка в B4.
Теперь в Excel я могу просматривать вкладку «Отображение» параметров сводной таблицы — следующий снимок экрана:
Если я сейчас сниму флажок с выбранной опции «Классический макет сводной таблицы» и нажму «ОК», чтобы сохранить изменения , а затем снова откройте ту же вкладку «Отображение» в параметрах сводной таблицы и повторно выберите тот же самый параметр «Классический макет сводной таблицы», который я только что снял, теперь сводная таблица выглядит и ведет себя правильно:
Любые предложения относительно того, как я могу изменить свой код, чтобы это часть сводной таблицы правильно отображает как правильную метку столбца строки-поля, так и правильный (рабочий) виджет раскрывающегося списка?
У меня есть ОЧЕНЬ элементарная сводная таблица, созданная с помощью EPPlus. Я пытаюсь заставить «Классический макет сводной таблицы» работать правильно. Вот простой код, который создает источник данных и сводный лист: [code]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);
[/code] Когда я открываю полученный файл в Excel и перехожу к листу сводной таблицы, я вижу следующее: [img]https://i.sstatic.net/eAo8aZHv.png[/img]
Обратите внимание на неправильную метку в A4 и отсутствующий виджет раскрывающегося списка в B4. Теперь в Excel я могу просматривать вкладку «Отображение» параметров сводной таблицы — следующий снимок экрана: [img]https://i.sstatic.net/Y6ggYax7.png[/img]
Если я сейчас сниму флажок с выбранной опции «Классический макет сводной таблицы» и нажму «ОК», чтобы сохранить изменения , а затем снова откройте ту же вкладку «Отображение» в параметрах сводной таблицы и повторно выберите тот же самый параметр «Классический макет сводной таблицы», который я только что снял, теперь сводная таблица выглядит и ведет себя правильно: [img]https://i.sstatic.net/JpSQvoj2.png[/img]
Любые предложения относительно того, как я могу изменить свой код, чтобы это часть сводной таблицы правильно отображает как правильную метку столбца строки-поля, так и правильный (рабочий) виджет раскрывающегося списка?
У меня есть ОЧЕНЬ элементарная сводная таблица, созданная с помощью EPPlus. Я пытаюсь заставить «Классический макет сводной таблицы» работать правильно.
Вот простой код, который создает источник данных и сводный лист:
using System;
using...
У меня есть начало очень рудиментарного таблица поворота, построенного с Epplus. Я пытаюсь получить «классическую макет таблицы стержней» для правильной работы.using System;
using System.Data;
using System.IO;
using OfficeOpenXml;
using...
Я создал сводную таблицу с помощью библиотеки EPPlus с помощью консольного приложения C#.
Это текущий код:
using OfficeOpenXml.Table.PivotTable;
using OfficeOpenXml.Table;
using OfficeOpenXml;
namespace EPPlus_POC
{
public class TransactionEPPlus...
Я работаю над документом Excel с использованием OpenXML, и мне нужно программно обновить фильтры сводной таблицы. В частности, я хочу изменить фильтр, примененный к полю (например, «Пол»), чтобы отобразить «F» (женщина) и скрыть «M» (мужчина).
Ниже...
Я пишу код для измерения площади поверхности и объема коробки. Наконец, я заставил это работать. Теперь задача состоит в том, что мне нужно создать 4 объекта и сохранить их в массиве, а затем использовать расширенный цикл for для прохождения каждого...