需求:

需要使用excel中动态生成chart图,并按需求样例调整图表样式。




java 修改excel java修改excel图表坐标轴_xml


实现:

使用模板设定+excel poi 动态设定

exel poi官网:Apache POI - the Java API for Microsoft Documents

官网提供有样例;

遇到难点:

X轴坐标左移、Y轴坐标上移;

解决尝试:

  1. 查找excel poi 提供了api文档,很多方法不知道具体使用效果,不能确定具体方法--抛弃;
  2. 使用解压软件winrar把excel文件解压成源码文件,如:


java 修改excel java修改excel图表坐标轴_官网_02


在目录中可以找到chart图的xml源码:


java 修改excel java修改excel图表坐标轴_excel_03


按此方式处理生成文件1、样式按需求调整后文件2,然后解压,在对比chart.xml文件,查看对应差异化。


java 修改excel java修改excel图表坐标轴_Powered by 金山文档_04


在使用poi提供的方法对相应参数进行设置:

//DE Y轴标题移位
        ctPlotArea.getValAxList().forEach(item -> {
            if (item.isSetTitle() && item.getTitle().isSetLayout()) {
                CTManualLayout ctManualLayout = item.getTitle().getLayout().addNewManualLayout();
                ctManualLayout.addNewY().setVal(0.1);
                ctManualLayout.addNewXMode().setVal(STLayoutMode.Enum.forInt(1));
                ctManualLayout.addNewYMode().setVal(STLayoutMode.Enum.forInt(1));
            }
        });