Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
.xls), так и современных именованных или пользовательских стилей сводных таблиц (предназначенных для файлов .xlsx, .xlsm и .xlsb). Выбор API зависит от формата файла, в который сохраняется рабочая книга, а не от формата, из которого она была загружена.
Aspose.Cells предоставляет два параллельных API стилей для сводных таблиц. Выбор между ними определяется форматом файла, в который сохраняется рабочая книга, а не форматом, из которого она считывается. Рабочую книгу, загруженную из файла .xls, можно повторно сохранить как .xlsx, и в этом случае применяется современный API стилей, а не устаревший.
PivotTable.PivotTableStyleType выбирает один из встроенных именованных стилей (светлые и тёмные темы, включая стили, добавленные в Excel 2017). Эти предустановки доступны только для чтения.PivotTable.PivotTableStyleName выбирает пользовательский стиль, который вы определяете самостоятельно через Workbook.Worksheets.TableStyles.AddPivotTableStyle(...). Пользовательские стили необходимы, когда требуется изменить цвета, границы или шрифты сверх того, что предлагают предустановки.
Кроме того, PivotTable.FormatAll(Style) — это вспомогательный метод, который применяет один объект Style к каждой ячейке сводной таблицы, переопределяя всё, что было задано через любой из приведённых выше API стилей. Это полезно, когда требуется единообразный внешний вид независимо от базовой темы.PivotTable.AutoFormatType принимает значение из перечисления Aspose.Cells.Pivot.PivotTableAutoFormatType. Доступные значения: от Report1 до Report10, Classic и от Table1 до Table10.
Следующий пример загружает новую рабочую книгу, заполняет её примерами данных Fruit/Year/Amount, добавляет сводную таблицу, применяет PivotTableAutoFormatType.Report5 и сохраняет результат как .xls.
Report1 до Report10, от Table1 до Table10) были разработаны в классическом Excel для одномерных сводных таблиц с полями строк и значениями — у них нет встроенного оформления для заголовков полей столбцов. Если вашей сводной таблице нужны поля столбцов, используйте современные предустановки PivotTableStyleType из Сценария 2, которые предназначены для двухмерного макета, используемого современным Excel.
using System;
using Aspose.Cells;
using Aspose.Cells.Pivot;
// Сценарий 1: Применить предустановленный автоформат legacy XLS
// Используемый API: PivotTable.AutoFormatType
// Целевой формат файла: .xls (устаревший)
// Для полных примеров и файлов данных перейдите по ссылке https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Создать новую рабочую книгу
Workbook workbook = new Workbook();
// Получить первый рабочий лист
Worksheet sheet = workbook.Worksheets[0];
// Заполнить исходные данные строкой заголовка (Fruit, Year, Amount)
// и 9 строками данных, охватывающими grape, blueberry, kiwi, cherry за 2020 и 2021 годы
sheet.Cells[0, 0].PutValue("Fruit");
sheet.Cells[0, 1].PutValue("Year");
sheet.Cells[0, 2].PutValue("Amount");
sheet.Cells[1, 0].PutValue("grape");
sheet.Cells[1, 1].PutValue(2020);
sheet.Cells[1, 2].PutValue(50);
sheet.Cells[2, 0].PutValue("blueberry");
sheet.Cells[2, 1].PutValue(2020);
sheet.Cells[2, 2].PutValue(30);
sheet.Cells[3, 0].PutValue("kiwi");
sheet.Cells[3, 1].PutValue(2020);
sheet.Cells[3, 2].PutValue(25);
sheet.Cells[4, 0].PutValue("cherry");
sheet.Cells[4, 1].PutValue(2020);
sheet.Cells[4, 2].PutValue(40);
sheet.Cells[5, 0].PutValue("grape");
sheet.Cells[5, 1].PutValue(2021);
sheet.Cells[5, 2].PutValue(60);
sheet.Cells[6, 0].PutValue("blueberry");
sheet.Cells[6, 1].PutValue(2021);
sheet.Cells[6, 2].PutValue(35);
sheet.Cells[7, 0].PutValue("kiwi");
sheet.Cells[7, 1].PutValue(2021);
sheet.Cells[7, 2].PutValue(28);
sheet.Cells[8, 0].PutValue("cherry");
sheet.Cells[8, 1].PutValue(2021);
sheet.Cells[8, 2].PutValue(45);
sheet.Cells[9, 0].PutValue("grape");
sheet.Cells[9, 1].PutValue(2020);
sheet.Cells[9, 2].PutValue(45);
// Добавить сводную таблицу в ячейку назначения E3 с именем "Pivot1", используя исходный диапазон A1:C10
int pivotIndex = sheet.PivotTables.Add("A1:C10", "E3", "Pivot1");
PivotTable pivotTable = sheet.PivotTables[pivotIndex];
// Назначить поля: Fruit -> Строки, Amount -> Данные
pivotTable.AddFieldToArea(PivotFieldType.Row, "Fruit");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
// Применить предустановленный автоформат legacy XLS "Report5"
// Примечание: Это свойство имеет смысл только при сохранении в формате .xls.
// При сохранении в формате .xlsx/.xlsm/.xlsb Excel игнорирует AutoFormatType
// и использует то, что указано в PivotTableStyleType / PivotTableStyleName.
pivotTable.AutoFormatType = PivotTableAutoFormatType.Report5;
// Сохранить рабочую книгу в устаревшем формате .xls
workbook.Save("output.xls");
Встроенные предустановки не могут быть изменены. Когда вам нужно переопределить цвета, границы или шрифты, необходимо определить пользовательский стиль сводной таблицы. Рабочий процесс состоит из трёх шагов:
TableStyles рабочей книги через Workbook.Worksheets.TableStyles.AddPivotTableStyle(string name). Этот метод возвращает индекс вновь созданного стиля.WholeTable или GrandTotalRow) через TableStyle.TableStyleElements.Add(TableStyleElementType), затем назначьте Style каждому элементу через TableStyleElement.SetElementStyle(Style).PivotTable.PivotTableStyleName равным имени стиля. Не используйте здесь PivotTableStyleType, так как это свойство выбирает встроенные предустановки.PivotTableStyleName и PivotTableStyleType не взаимозаменяемы. Используйте PivotTableStyleType для встроенных предустановок и PivotTableStyleName для пользовательских стилей, определённых через AddPivotTableStyle. Установка обоих свойств безвредна, но отображается только то, которое соответствует предполагаемому источнику.
Доступные значения TableStyleElementType включают WholeTable, FirstRow, LastRow, FirstColumn, LastColumn, GrandTotalRow, GrandTotalColumn, PageFieldLabels и PageFieldValues.
Следующий пример определяет пользовательский стиль сводной таблицы с тонкой чёрной границей для WholeTable и жирным красным шрифтом для GrandTotalRow, затем применяет его через PivotTableStyleName и сохраняет как .xlsx.
using System;
using Aspose.Cells;
using Aspose.Cells.Pivot;
using System.Drawing;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
// Заполняем исходные данные: строка заголовков + 9 строк данных (A1:C10)
worksheet.Cells["A1"].PutValue("Fruit");
worksheet.Cells["B1"].PutValue("Year");
worksheet.Cells["C1"].PutValue("Amount");
worksheet.Cells["A2"].PutValue("Grape");
worksheet.Cells["B2"].PutValue(2020);
worksheet.Cells["C2"].PutValue(100);
worksheet.Cells["A3"].PutValue("Blueberry");
worksheet.Cells["B3"].PutValue(2020);
worksheet.Cells["C3"].PutValue(200);
worksheet.Cells["A4"].PutValue("Kiwi");
worksheet.Cells["B4"].PutValue(2020);
worksheet.Cells["C4"].PutValue(300);
worksheet.Cells["A5"].PutValue("Cherry");
worksheet.Cells["B5"].PutValue(2020);
worksheet.Cells["C5"].PutValue(400);
worksheet.Cells["A6"].PutValue("Grape");
worksheet.Cells["B6"].PutValue(2021);
worksheet.Cells["C6"].PutValue(500);
worksheet.Cells["A7"].PutValue("Blueberry");
worksheet.Cells["B7"].PutValue(2021);
worksheet.Cells["C7"].PutValue(600);
worksheet.Cells["A8"].PutValue("Kiwi");
worksheet.Cells["B8"].PutValue(2021);
worksheet.Cells["C8"].PutValue(700);
worksheet.Cells["A9"].PutValue("Cherry");
worksheet.Cells["B9"].PutValue(2021);
worksheet.Cells["C9"].PutValue(800);
worksheet.Cells["A10"].PutValue("Grape");
worksheet.Cells["B10"].PutValue(2021);
worksheet.Cells["C10"].PutValue(900);
// Добавляем сводную таблицу с источником A1:C10, привязанную к E3, с именем "Pivot1"
int pivotIndex = worksheet.PivotTables.Add("A1:C10", "E3", "Pivot1");
PivotTable pivotTable = worksheet.PivotTables[pivotIndex];
pivotTable.AddFieldToArea(PivotFieldType.Row, "Fruit");
pivotTable.AddFieldToArea(PivotFieldType.Column, "Year");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
// Шаг 1: регистрируем новый пользовательский стиль сводной таблицы и сохраняем его индекс
int styleIndex = workbook.Worksheets.TableStyles.AddPivotTableStyle("CustomPivotStyle");
TableStyle tableStyle = workbook.Worksheets.TableStyles[styleIndex];
// Шаг 2: добавляем элемент WholeTable и применяем тонкие чёрные границы со всех четырёх сторон
int wholeTableElementIndex = tableStyle.TableStyleElements.Add(TableStyleElementType.WholeTable);
TableStyleElement wholeTableElement = tableStyle.TableStyleElements[wholeTableElementIndex];
Style wholeTableStyle = workbook.CreateStyle();
wholeTableStyle.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
wholeTableStyle.Borders[BorderType.TopBorder].Color = Color.Black;
wholeTableStyle.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
wholeTableStyle.Borders[BorderType.BottomBorder].Color = Color.Black;
wholeTableStyle.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
wholeTableStyle.Borders[BorderType.LeftBorder].Color = Color.Black;
wholeTableStyle.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
wholeTableStyle.Borders[BorderType.RightBorder].Color = Color.Black;
wholeTableElement.SetElementStyle(wholeTableStyle);
// Шаг 3: добавляем элемент GrandTotalRow и применяем жирный красный шрифт
int grandTotalElementIndex = tableStyle.TableStyleElements.Add(TableStyleElementType.GrandTotalRow);
TableStyleElement grandTotalElement = tableStyle.TableStyleElements[grandTotalElementIndex];
Style grandTotalStyle = workbook.CreateStyle();
grandTotalStyle.Font.IsBold = true;
grandTotalStyle.Font.Color = Color.Red;
grandTotalElement.SetElementStyle(grandTotalStyle);
// Шаг 4: применяем пользовательский стиль по имени (НЕ через PivotTableStyleType, который предназначен для встроенных предустановок)
pivotTable.PivotTableStyleName = "CustomPivotStyle";
workbook.Save("output.xlsx");
PivotTable.FormatAll(Style) — это вспомогательный метод, который применяет один объект Style к каждой ячейке сводной таблицы, включая область данных, заголовки строк и столбцов, а также итоги. Всё, что было ранее установлено через PivotTableStyleType или PivotTableStyleName, переопределяется.
FormatAll переопределяет и PivotTableStyleType, и PivotTableStyleName. Используйте его только в том случае, когда требуется единообразный, не зависящий от темы внешний вид по всей сводной таблице.
Следующий пример создаёт Style с жёлтой сплошной заливкой, жирным тёмно-синим шрифтом и тонкими чёрными границами со всех сторон, затем применяет его с помощью FormatAll и сохраняет как .xlsx.
using System;
using System.Drawing;
using System.IO;
using Aspose.Cells;
using Aspose.Cells.Pivot;
// Сценарий 4: Применение одного стиля ко всем ячейкам сводной таблицы с помощью FormatAll
// Используемый API: PivotTable.FormatAll(Style)
// Целевой формат: .xlsx
// Ссылка GitHub: см. репозиторий Aspose.Cells-for-.NET — примеры стилей сводных таблиц
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
// Заполнение исходных данных: строка заголовка (строка 1) + 9 строк данных (строки 2-10)
worksheet.Cells["A1"].PutValue("Fruit");
worksheet.Cells["B1"].PutValue("Year");
worksheet.Cells["C1"].PutValue("Amount");
worksheet.Cells["A2"].PutValue("Grape");
worksheet.Cells["B2"].PutValue(2020);
worksheet.Cells["C2"].PutValue(5000);
worksheet.Cells["A3"].PutValue("Blueberry");
worksheet.Cells["B3"].PutValue(2020);
worksheet.Cells["C3"].PutValue(3000);
worksheet.Cells["A4"].PutValue("Kiwi");
worksheet.Cells["B4"].PutValue(2020);
worksheet.Cells["C4"].PutValue(4000);
worksheet.Cells["A5"].PutValue("Cherry");
worksheet.Cells["B5"].PutValue(2020);
worksheet.Cells["C5"].PutValue(2000);
worksheet.Cells["A6"].PutValue("Grape");
worksheet.Cells["B6"].PutValue(2021);
worksheet.Cells["C6"].PutValue(6000);
worksheet.Cells["A7"].PutValue("Blueberry");
worksheet.Cells["B7"].PutValue(2021);
worksheet.Cells["C7"].PutValue(3500);
worksheet.Cells["A8"].PutValue("Kiwi");
worksheet.Cells["B8"].PutValue(2021);
worksheet.Cells["C8"].PutValue(4500);
worksheet.Cells["A9"].PutValue("Cherry");
worksheet.Cells["B9"].PutValue(2021);
worksheet.Cells["C9"].PutValue(2500);
worksheet.Cells["A10"].PutValue("Grape");
worksheet.Cells["B10"].PutValue(2021);
worksheet.Cells["C10"].PutValue(5500);
// Добавление сводной таблицы: исходный диапазон A1:C10, ячейка назначения E3, имя "Pivot1"
int pivotIndex = worksheet.PivotTables.Add("A1:C10", "E3", "Pivot1");
PivotTable pivotTable = worksheet.PivotTables[pivotIndex];
// Назначение полей сводной таблицы: Fruit -> область строк, Year -> область столбцов, Amount -> область данных
pivotTable.AddFieldToArea(PivotFieldType.Row, "Fruit");
pivotTable.AddFieldToArea(PivotFieldType.Column, "Year");
pivotTable.AddFieldToArea(PivotFieldType.Data, "Amount");
// Создание стиля, который будет принудительно применён к каждой ячейке сводной таблицы
Style style = workbook.CreateStyle();
style.ForegroundColor = Color.Yellow;
style.Pattern = BackgroundType.Solid;
style.Font.IsBold = true;
style.Font.Color = Color.DarkBlue;
style.Borders[BorderType.TopBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.TopBorder].Color = Color.Black;
style.Borders[BorderType.BottomBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.BottomBorder].Color = Color.Black;
style.Borders[BorderType.LeftBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.LeftBorder].Color = Color.Black;
style.Borders[BorderType.RightBorder].LineStyle = CellBorderType.Thin;
style.Borders[BorderType.RightBorder].Color = Color.Black;
// Применение FormatAll: принудительно применяет этот единственный стиль ко всем ячейкам сводной таблицы,
// переопределяя любые ранее установленные PivotTableStyleType / PivotTableStyleName
pivotTable.FormatAll(style);
// Сохранение книги в современном формате .xlsx
workbook.Save("output.xlsx");
Выбор API стилей зависит от формата файла, в который вы сохраняете. Используйте таблицу ниже в качестве краткого справочника.
| Целевой формат файла | Используемый API | Примечания |
|---|---|---|
.xls (устаревший) |
PivotTable.AutoFormatType |
Значения из Aspose.Cells.Pivot.PivotTableAutoFormatType (например, Report1–Report10, Classic, Table1–Table10). Игнорируется при сохранении в современные форматы. |
.xlsx / .xlsm / .xlsb (современный, встроенный стиль) |
PivotTable.PivotTableStyleType |
Значения из Aspose.Cells.PivotTableStyleType (светлые/тёмные темы, включая дополнения Excel 2017). |
.xlsx / .xlsm / .xlsb (современный, пользовательский стиль) |
PivotTable.PivotTableStyleName + Worksheets.TableStyles.AddPivotTableStyle(...) |
Используйте, когда встроенных предустановок недостаточно. Настройка через TableStyleElement.SetElementStyle(...). |
| Любой формат (единообразное переопределение) | PivotTable.FormatAll(Style) |
Вспомогательный метод, переопределяющий любые другие настройки стилей по всей сводной таблице. |
В случае сомнений сохраняйте в формате .xlsx и используйте PivotTableStyleType для встроенных тем или PivotTableStyleName для пользовательских тем. |
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.