Невозможно создать отчет о диаграмме по двойной оси Y в Excel с использованием NPOI 2.6.2 и C#. ⇐ C#
-
Гость
Невозможно создать отчет о диаграмме по двойной оси Y в Excel с использованием NPOI 2.6.2 и C#.
Я не могу создать отчет о диаграмме в Excel со вторичной осью Y. Ниже приведен код, который я уже разработал для первичной оси Y, но мое требование состоит в том, чтобы создать также вторичную ось Y, чего невозможно достичь с помощью NPOI. . Не могли бы вы помочь мне выполнить это требование, а также подсказать, как его достичь с помощью приведенного ниже кода.
введите здесь описание изображения
с использованием NPOI.SS.UserModel; использование NPOI.SS.UserModel.Charts; использование NPOI.XSSF.UserModel; использование System.IO; используя NPOI.SS.Util; использование Newtonsoft.Json; частный недействительный GenerateSingleAxisReport () {попробуйте {книга IWorkbook = новый XSSFWorkbook (); Лист ISheet = workbook.CreateSheet("Профиль"); // Пример данных для диаграммы // Заменяем jsonText фактической строкой JSON string jsonText = File.ReadAllText("C:\GIT\WpfApp1\WpfApp1\file1.json"); лист.CreateRow(0).CreateCell(0).SetCellValue("Время"); лист.GetRow(0).CreateCell(1).SetCellValue("Подача W"); лист.GetRow(0).CreateCell(2).SetCellValue("Фракция уровня V1"); лист.GetRow(0).CreateCell(3).SetCellValue("Температура T1"); лист.GetRow(0).CreateCell(4).SetCellValue("T1 Vapor"); List dataRecords = JsonConvert.DeserializeObject(jsonText);
// Теперь вы можете получить доступ к данным интервал я = 1; foreach (запись var в dataRecords) { лист.CreateRow(i).CreateCell(0).SetCellValue(record.Time); лист.GetRow(i).CreateCell(1).SetCellValue(record.FeedW); лист.GetRow(i).CreateCell(2).SetCellValue(record.V1LevelFraction); лист.GetRow(i).CreateCell(3).SetCellValue(record.T1Temperature); лист.GetRow(i).CreateCell(4).SetCellValue(record.T1Vapor); я++; } IDrawing патриарх = лист.CreateDrawingPatriarch(); IClientAnchor якорь = patriarch.CreateAnchor(0, 0, 0, 0, 6, 0, 15, 15); Диаграмма IChart = patriarch.CreateChart(anchor); // Добавляем заголовок к диаграмме chart.SetTitle("Объединенная диаграмма трендов"); // Устанавливаем здесь заголовок Легенда IChartLegend =chart.GetOrCreateLegend(); легенда.Позиция = ЛегендаПозиция.Низ; // Диаграмма рассеяния IScatterChartData data =chart.ChartDataFactory.CreateScatterChartData(); // Используйте ось категорий в качестве нижней оси. IChartAxis BottomAxis = диаграмма.ChartAxisFactory.CreateCategoryAxis(AxisPosition.Bottom); IValueAxis leftAxis = диаграмма.ChartAxisFactory.CreateValueAxis(AxisPosition.Left); leftAxis.Crosses = AxisCrosses.AutoZero; // Серия 1 IChartDataSource xs1 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 0, 0)); IChartDataSource ys1 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 1, 1)); IScatterChartSeries series1 = data.AddSeries(xs1, ys1); series1.SetTitle("Фракция уровня V1"); // Серия 2 IChartDataSource xs2 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 0, 0)); IChartDataSource ys2 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 2, 2)); IScatterChartSeries series2 = data.AddSeries(xs2, ys2); series2.SetTitle("Температура T1 C"); диаграмма.Plot(данные, нижняя ось, левая ось); используя (поток FileStream = новый FileStream("BasicLineChartReport.xlsx", FileMode.Create, FileAccess.Write)) { рабочая книга.Write(поток); } MessageBox.Show("Отчет Excel создан успешно."); } поймать (Исключение ex) { MessageBox.Show($"Ошибка создания отчета диаграммы Excel: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); }
Я не могу создать отчет о диаграмме в Excel со вторичной осью Y. Ниже приведен код, который я уже разработал для первичной оси Y, но мое требование состоит в том, чтобы создать также вторичную ось Y, чего невозможно достичь с помощью NPOI. . Не могли бы вы помочь мне выполнить это требование, а также подсказать, как его достичь с помощью приведенного ниже кода.
введите здесь описание изображения
с использованием NPOI.SS.UserModel; использование NPOI.SS.UserModel.Charts; использование NPOI.XSSF.UserModel; использование System.IO; используя NPOI.SS.Util; использование Newtonsoft.Json; частный недействительный GenerateSingleAxisReport () {попробуйте {книга IWorkbook = новый XSSFWorkbook (); Лист ISheet = workbook.CreateSheet("Профиль"); // Пример данных для диаграммы // Заменяем jsonText фактической строкой JSON string jsonText = File.ReadAllText("C:\GIT\WpfApp1\WpfApp1\file1.json"); лист.CreateRow(0).CreateCell(0).SetCellValue("Время"); лист.GetRow(0).CreateCell(1).SetCellValue("Подача W"); лист.GetRow(0).CreateCell(2).SetCellValue("Фракция уровня V1"); лист.GetRow(0).CreateCell(3).SetCellValue("Температура T1"); лист.GetRow(0).CreateCell(4).SetCellValue("T1 Vapor"); List dataRecords = JsonConvert.DeserializeObject(jsonText);
// Теперь вы можете получить доступ к данным интервал я = 1; foreach (запись var в dataRecords) { лист.CreateRow(i).CreateCell(0).SetCellValue(record.Time); лист.GetRow(i).CreateCell(1).SetCellValue(record.FeedW); лист.GetRow(i).CreateCell(2).SetCellValue(record.V1LevelFraction); лист.GetRow(i).CreateCell(3).SetCellValue(record.T1Temperature); лист.GetRow(i).CreateCell(4).SetCellValue(record.T1Vapor); я++; } IDrawing патриарх = лист.CreateDrawingPatriarch(); IClientAnchor якорь = patriarch.CreateAnchor(0, 0, 0, 0, 6, 0, 15, 15); Диаграмма IChart = patriarch.CreateChart(anchor); // Добавляем заголовок к диаграмме chart.SetTitle("Объединенная диаграмма трендов"); // Устанавливаем здесь заголовок Легенда IChartLegend =chart.GetOrCreateLegend(); легенда.Позиция = ЛегендаПозиция.Низ; // Диаграмма рассеяния IScatterChartData data =chart.ChartDataFactory.CreateScatterChartData(); // Используйте ось категорий в качестве нижней оси. IChartAxis BottomAxis = диаграмма.ChartAxisFactory.CreateCategoryAxis(AxisPosition.Bottom); IValueAxis leftAxis = диаграмма.ChartAxisFactory.CreateValueAxis(AxisPosition.Left); leftAxis.Crosses = AxisCrosses.AutoZero; // Серия 1 IChartDataSource xs1 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 0, 0)); IChartDataSource ys1 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 1, 1)); IScatterChartSeries series1 = data.AddSeries(xs1, ys1); series1.SetTitle("Фракция уровня V1"); // Серия 2 IChartDataSource xs2 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 0, 0)); IChartDataSource ys2 = DataSources.FromNumericCellRange(лист, новый CellRangeAddress(0, 60, 2, 2)); IScatterChartSeries series2 = data.AddSeries(xs2, ys2); series2.SetTitle("Температура T1 C"); диаграмма.Plot(данные, нижняя ось, левая ось); используя (поток FileStream = новый FileStream("BasicLineChartReport.xlsx", FileMode.Create, FileAccess.Write)) { рабочая книга.Write(поток); } MessageBox.Show("Отчет Excel создан успешно."); } поймать (Исключение ex) { MessageBox.Show($"Ошибка создания отчета диаграммы Excel: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); }
Мобильная версия