Три метода фильтрации данных диаграммы
1. Отфильтровать серии для отображения диаграммы
Шаги по фильтрации серии с диаграммы в Excel
В Excel мы можем отфильтровать определенные серии с диаграммы, что приводит к тому, что данные серии не отображаются на диаграмме. Исходная диаграмма показана на Рисунке 1. Однако, когда мы отфильтровываем Тестовая серия2 и Тестовая серия4, диаграмма будет выглядеть как показано на Рисунке 2.
В Aspose.Cells мы можем выполнять аналогичные операции. Для образца файла, если мы хотим отфильтровать Тестовая серия2 и Тестовая серия4, мы можем выполнить следующий код. Кроме того, мы будем хранить два списка: один (NSeries) для хранения всех выбранных серий и другой (FilteredNSeries) для хранения отфильтрованных серий.
Пожалуйста, обратите внимание, что в коде, когда мы устанавливаем chart.NSeries[0].IsFiltered = true;, первая серия в NSeries будет удалена и помещена в соответствующую позицию в FilteredNSeries. Впоследствии предыдущая NSeries[1] станет новым первым элементом в списке, и все последующие серии сдвинутся вперед на одну позицию. Это означает, что если мы затем выполним chart.NSeries[1].IsFiltered = true;, мы фактически удалим исходную третью серию. Это иногда может привести к путанице, поэтому мы рекомендуем следовать операции в коде, которая удаляет серии с конца в начало.
Образец кода
Приведенный ниже образец кода загружает образец файла Excel.
// Create an instance of existing Workbook | |
Workbook workbook = new Workbook("seriesFiltered.xlsx"); | |
// Get filtered series list | |
SeriesCollection nSeriesFiltered = workbook.Worksheets[0].Charts["Chart 1"].FilteredNSeries; | |
// Get selected series list | |
SeriesCollection nSeries = workbook.Worksheets[0].Charts["Chart 1"].NSeries; | |
// Should be 0 | |
Console.WriteLine("Filtered Series count" + nSeriesFiltered.Count); | |
// Should be 6 | |
Console.WriteLine("Visiable Series count" + nSeries.Count); | |
// Process from the end to the beginning | |
nSeries[1].IsFiltered = true; | |
nSeries[0].IsFiltered = true; | |
// Should be 2 | |
Console.WriteLine("Filtered Series count" + nSeriesFiltered.Count); | |
// Should be 4 | |
Console.WriteLine("Visiable Series count" + nSeries.Count); | |
workbook.Save("seriesFiltered-out.xlsx"); | |
workbook = new Workbook("seriesFiltered-out.xlsx"); | |
// Should be 2 | |
Console.WriteLine("Filtered Series count" + nSeriesFiltered.Count); | |
// Should be 4 | |
Console.WriteLine("Visiable Series count" + nSeries.Count); |
2. Отфильтруйте данные и дайте диаграмме измениться
Фильтрация данных - отличный способ обработки фильтров диаграмм с большим объемом данных. Когда вы фильтруете данные, диаграмма изменяется. Одной из проблем, с которой нам придется столкнуться, будет убеждение в том, что диаграмма остается на экране. При фильтрации вы получаете скрытые строки, и иногда диаграмма будет находиться в этих скрытых строках.
Шаги для использования фильтров данных для изменения диаграммы в Excel
- Щелкните внутри вашего диапазона данных.
- Щелкните вкладку Данные и включите фильтры, щелкнув по кнопке Фильтры. Ваша строка заголовка будет иметь выпадающие стрелки.
- Создайте диаграмму, перейдя на вкладку Вставка и выбрав столбчатую диаграмму.
- Теперь отфильтруйте свои данные, используя выпадающие стрелки в данных. Не используйте фильтры диаграммы.
Образец кода
Приведенный ниже образец кода показывает ту же функцию с использованием Aspsoe.Cells.
// Create an instance of Workbook | |
Workbook workbook = new Workbook(); | |
// Get the First sheet. | |
Worksheet sheet = workbook.Worksheets["Sheet1"]; | |
// Add data into details cells. | |
sheet.Cells[0, 0].PutValue("Fruits Name"); | |
sheet.Cells[0, 1].PutValue("Fruits Price"); | |
sheet.Cells[1, 0].PutValue("Apples"); | |
sheet.Cells[2, 0].PutValue("Bananas"); | |
sheet.Cells[3, 0].PutValue("Grapes"); | |
sheet.Cells[4, 0].PutValue("Oranges"); | |
sheet.Cells[1, 1].PutValue(5); | |
sheet.Cells[2, 1].PutValue(2); | |
sheet.Cells[3, 1].PutValue(1); | |
sheet.Cells[4, 1].PutValue(4); | |
// Add a chart to the worksheet | |
int chartIndex = sheet.Charts.Add(Aspose.Cells.Charts.ChartType.Column, 7, 7, 15, 15); | |
// Access the instance of the newly added chart | |
Aspose.Cells.Charts.Chart chart = sheet.Charts[chartIndex]; | |
// Set data range | |
chart.SetChartDataRange("A1:B5", true); | |
// Set AutoFilter range | |
sheet.AutoFilter.Range = "A1:B5"; | |
// Add filters for a filter column. | |
sheet.AutoFilter.AddFilter(0, "Bananas"); | |
sheet.AutoFilter.AddFilter(0, "Oranges"); | |
// Apply the filters | |
sheet.AutoFilter.Refresh(); | |
chart.ToImage("Autofilter.png"); | |
workbook.Save("Autofilter.xlsx"); |
3. Отфильтруйте данные с помощью таблицы и дайте измениться диаграмме
Использование таблицы похоже на Метод 2, используя диапазон, но у вас есть преимущества таблиц перед диапазонами. Когда вы изменяете свой диапазон на таблицу и добавляете данные, диаграмма автоматически обновляется. С диапазоном вам придется изменять источник данных.
Форматирование как таблица в Excel
Щелкните внутри ваших данных и используйте CTRL+T или используйте вкладку Главная, Форматировать как таблицу
Образец кода
Приведенный ниже образец кода загружает образец файла Excel показывает ту же функцию с использованием Aspsoe.Cells.
// Create a workbook. | |
Workbook workbook = new Workbook("TableFilters.xlsx"); | |
// Access first worksheet | |
Worksheet sheet = workbook.Worksheets[0]; | |
// Access the instance of the newly added chart | |
int chartIndex = sheet.Charts.Add(Aspose.Cells.Charts.ChartType.Column, 7, 7, 15, 15); | |
Aspose.Cells.Charts.Chart chart = sheet.Charts[chartIndex]; | |
// Set data range | |
chart.SetChartDataRange("A1:B7", true); | |
// Convert the chart to image | |
chart.ToImage("TableFilters.before.png"); | |
// Add a new List Object to the worksheet | |
Aspose.Cells.Tables.ListObject listObject = sheet.ListObjects[sheet.ListObjects.Add("A1", "B7", true)]; | |
// Add default style to the table | |
listObject.TableStyleType = Aspose.Cells.Tables.TableStyleType.TableStyleMedium10; | |
// Show Total | |
listObject.ShowTotals = false; | |
// Add filters for a filter column. | |
listObject.AutoFilter.AddFilter(0, "James"); | |
// Apply the filters | |
listObject.AutoFilter.Refresh(); | |
//After adding new value the chart will change | |
listObject.PutCellValue(7, 0, "Me"); | |
listObject.PutCellValue(7, 1, 1000); | |
// Check the changed images | |
chart.ToImage("TableFilters.after.png"); | |
// Saving the Excel file | |
workbook.Save("TableFilter.out.xlsx"); |