image.jpg (141.8 KB)
如何设置能使透视表的面积图切换成这种单色模式?
原因
要将透视表的面积图切换为单色模式,您需要调整图表的系列颜色设置。Aspose.Words for Java 提供了对图表样式和颜色的灵活控制。
解决方案
您可以通过设置系列的填充颜色来实现单色效果。以下是一个简单的示例,展示如何将面积图的系列颜色设置为单一颜色。
代码
// 创建一个新的文档
Document doc = new Document();
// 添加透视表图表
Chart chart = doc.getFirstSection().getBody().getCharts().addChart(ChartType.AREA, 0, 0, 500, 300);
// 添加数据系列
ChartSeries series = chart.getSeries().add("数据系列", new double[]{1, 2, 3, 4, 5});
// 设置系列颜色为单色
series.getFillFormat().setSolidFillColor(Color.getBlue()); // 设置为蓝色
后续步骤
请根据您的需求调整颜色和数据系列。如果您需要进一步的帮助或有其他问题,请随时告诉我!我将乐意为您提供支持。
感谢您的关注,期待您的回复!
我用的是aspose cells 不是words
@YU_tou
以下代码展示了如何修改一个面积图的背景颜色:
path = "";
Workbook wb = new Workbook(path + "Test.xlsx");
Worksheet ws = wb.Worksheets[0];
Chart chart1 = ws.Charts[0];
chart1.NSeries[0].Area.FillFormat.FillType = FillType.Solid;
chart1.NSeries[0].Area.ForegroundColor = Color.Red;
wb.Save(path + "Output.xlsx");
Test.zip (10.0 KB)
这是一个简单的例子,如果你还有更进一步的疑问,可以提供你的文件,我们会进一步分析.谢谢.
你这看起来不是java版的代码
并且我在设置ChartType.AREA_100_PERCENT_STACKED的chart类型后,chart.getNSeries()返回的是空数组?是为什么?
我这是基于透视表创建的面积图,而不是直接创建一个chart对象
请参考Java样例代码:
Workbook wb = new Workbook(path + "Test.xlsx");
Worksheet ws = wb.getWorksheets().get(0);
Chart chart1 = ws.getCharts().get(0);
Series series = chart1.getNSeries().get(0);
series.getArea().getFillFormat().setFillType(FillType.SOLID);
series.getArea().setForegroundColor(Color.getRed());
wb.save(path + "Output.xlsx");
你愿意提供你的样例文件和可运行的java测试代码吗?我们很快就会检查。
@YU_tou
目前Aspose.Cells还不支持更改Chart颜色。
我们已经在内部问题跟踪系统中打开了以下新问题单,并将根据Free Support Policies中提到的条款提供修复。
问题单号:CELLSJAVA-46440
我们根据你的描述信息制作了样例文件,通过以下样例代码进行测试,我们可以正常运行,没有任何异常。请查看附件。result.zip (428.6 KB)
Workbook wb = new Workbook(filePath + "testfile.xlsx");
Worksheet ws = wb.getWorksheets().get(0);
ChartCollection charts = ws.getCharts();
int index = charts.add(ChartType.AREA_100_PERCENT_STACKED, 15, 0, 35, 12);
Chart chart1 = charts.get(index);
chart1.setChartDataRange("D7:F9", false);
System.out.println(chart1.getNSeries().getCount());
wb.save(filePath + "out_java.xlsx");
输出结果:
3
如果你依然有疑问,请提供你的样例文件和可运行的测试代码,我们很快就会检查。
@YU_tou
如果是透视表作为数据源的chart,chart.getNSeries()返回的是空数组,请刷新chart的数据:
用 Chart.refreshPivotData() 从透视表上刷新数据。
或者 用Workbook.getWorksheets().refreshAll(); 刷新透视表和chart
我们在此通知您,您的问题(工单编号:“CELLSJAVA-46440”)已解决。我们现已支持更改图表系列的主题颜色,并新增了相关方法以满足您的需求。您可以参考以下代码行:
chart.NSeries.ChangeColors(ChartColorPaletteType.MonochromaticPalette1);
此新功能/增强内容将包含在即将发布的版本(Aspose.Cells v25.8)中,我们计划于2025年8月的本周末或下周发布。新版本发布后,我们会通知您。
The issues you have found earlier (filed as CELLSJAVA-46440) have been fixed in Aspose.Cells for Java 25.8.