使用Aspose slide for Java编辑ppt内嵌的图表数据后,再使用ppt软件编辑ppt的内嵌图表数据时无法更新展示的图表样式

使用Aspose slide for Java编辑PPT,代码如下:

Presentation presentation = new Presentation("D:\\demo2.pptx");
ISlideCollection slides = presentation.getSlides();
for (ISlide slide : slides) {
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IChart) {
            IChart chart = (IChart) shape;
            if (chart.getType() == ChartType.SeriesOfMixedTypes) {
                IChartData chartData = chart.getChartData();
                // 获取图表的数据
                IChartSeriesCollection series = chartData.getSeries();
                for (IChartSeries serie : series) {
                    //数据集
                    IChartDataPointCollection dataPoints = serie.getDataPoints();
                    dataPoints.setDataSourceTypeForValues(DataSourceType.DoubleLiterals);
                    for (IChartDataPoint dataPoint : dataPoints) {
                        if (dataPoint.getValue() != null) {
                            IDoubleChartValue value = dataPoint.getValue();
                            value.setData(1.14);
                        }
                    }
                }
            }
        }
    }
}

期望用代码处理后的文件,在用MS PPT工具打开时可以再次编辑文件中柱状图显示的数据,但实际编辑完的pptx文件用MS PPT工具打开能正常显示柱状图,此时在柱状图右键编辑 - 使用excel编辑数据时,调整柱状图对应的数据保存后,柱状图的显示并没有更新,想问下这中情况是因为代码处理的不对,还是有其他问题呢?附件是用这段代码处理后的pptx文件
demo2.pptx.zip (48.3 KB)

@Ran_Ding

在使用Aspose Slides for Java编辑PPT中的内嵌图表数据后,如果在使用Microsoft PowerPoint编辑时无法更新图表样式,可能是由于以下几个原因:

  1. 数据源类型:在您的代码中,您将数据点的值设置为DataSourceType.DoubleLiterals。确保您在更新图表数据时使用正确的数据源类型。通常,使用DataSourceType.ChartDataWorkbook可以更好地与PowerPoint的内嵌图表兼容。

  2. 图表数据更新:在更新图表数据时,确保您正确地更新了所有相关的数据点和系列。您可以参考其他示例代码,确保在更新图表时,所有数据点都被正确设置。

  3. 图表类型:您在代码中将图表类型设置为ChartType.SeriesOfMixedTypes。某些图表类型可能在PowerPoint中表现不佳,建议尝试使用更常见的图表类型,如ChartType.ClusteredColumn,以确保兼容性。

  4. 保存格式:确保在保存PPT文件时使用正确的格式。您可以使用SaveFormat.Pptx来确保文件格式正确。

以下是一个示例代码,展示如何更新图表数据并保存PPT文件:

Presentation presentation = new Presentation("D:\\demo2.pptx");
ISlideCollection slides = presentation.getSlides();
for (ISlide slide : slides) {
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IChart) {
            IChart chart = (IChart) shape;
            IChartData chartData = chart.getChartData();
            IChartSeriesCollection series = chartData.getSeries();
            for (IChartSeries serie : series) {
                IChartDataPointCollection dataPoints = serie.getDataPoints();
                for (IChartDataPoint dataPoint : dataPoints) {
                    if (dataPoint.getValue() != null) {
                        IDoubleChartValue value = dataPoint.getValue();
                        value.setData(1.14); // 更新数据
                    }
                }
            }
            chart.setType(ChartType.ClusteredColumn); // 设置图表类型
        }
    }
}
presentation.save("D:\\updated_demo2.pptx", SaveFormat.Pptx);

请尝试以上建议,并确保在使用Microsoft PowerPoint编辑时,图表能够正确更新。如果问题仍然存在,建议检查Aspose的文档或相关示例,以获取更多信息和帮助。

@Ran_Ding,
感谢您联系免费支持。很遗憾,在执行示例代码后,我无法重现您提供的 PowerPoint 演示文稿中编辑图表数据的问题。我使用了 Aspose.Slides for Java 23.10 和 25.3。请再次仔细检查此问题。如果问题仍然存在,请提供更详细的分步说明,以便我们重现该问题。

问题解决了,chart表格数据有公式引用,改用IChartDataWorkbook处理公式对应的原始表格单元数据并调用#calculateFormulas就能正常刷新chart显示了

@Ran_Ding,
我们很高兴问题在您那边得到了圆满解决。感谢您使用 Aspose.Slides for .Java。