java使用poi操作world生成饼图,2021金九银十面试季

工具类:组合数据类


package com.wyz.world.utils;

import lombok.Getter;

import lombok.ToString;

import lombok.extern.slf4j.Slf4j;

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;

import org.apache.poi.xwpf.usermodel.XWPFChart;

import org.apache.xmlbeans.XmlObject;

import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart;

import org.springframework.util.CollectionUtils;

import org.springframework.util.StringUtils;

import java.io.IOException;

import java.util.*;

import java.util.stream.Collectors;

/**

  • @author BM_hyjw

  • 图表要填充的数据格式

*/

@Slf4j

@Getter

@ToString

public class ChartModel {

/**

  • 标记 用来记录当前是否是单元素的图表

*/

private Boolean isSingle = true;

/**

  • 内置表格页名

*/

private String sheetName;

/**

  • 图表

*/

private XWPFChart xwpfChart;

/**

  • 具体图

*/

private List xmlObjectList = new ArrayList<>();

/**

  • 绘制区域图

*/

private CTChart ctChart;

/**

  • 标题

*/

private List titleList;

/**

  • 数据源对应的key

*/

private List numberList;

/**

  • 填充的数据源

*/

private List<Map<String, String>> sourceModelList;

/**

  • 目标数据

*/

private List chartsEnumList;

/**

  • 赋值 替换目标

  • @param numberList

*/

public void setNumberList(List numberList){

this.numberList = numberList;

}

/**

  • 赋值 数据源

  • @param sourceModelList

*/

public void setSourceModelList(List<Map<String, String>> sourceModelList){

this.sourceModelList = sourceModelList;

}

/**

  • 赋值 标题

  • @param titleList

*/

public void setTitleList(List titleList){

this.titleList = titleList;

}

/**

  • 单个赋值 图表

  • @param charts 所有可绘制区域

  • @param chartSeat 要操作的图表中可绘制区域位置

  • @param xmlObjSeat 图表在可绘制区域中的位置

  • @param chartsEnum 目标的表格类型

*/

public void setSingleChart(List charts,int chartSeat,int xmlObjSeat,ChartsEnum chartsEnum){

List chartsEnumList = Arrays.asList(chartsEnum);

/**

  • 封装基础数据

*/

this.packageBasic(charts, chartSeat,chartsEnumList);

/**

  • 获得目标图表

*/

XmlObject targetChart = chartsEnum.getTargetChart(chartSeat, this.ctChart, xmlObjSeat);

this.xmlObjectList = Arrays.asList(targetChart);

//当前是单元素

this.isSingle = true;

}

/**

  • 组合赋值 图表

  • @param charts 所有可绘制区域

  • @param chartSeat 要操作的图表中可绘制区域位置

  • @param xmlObjSeat 图表在可绘制区域中的位置

  • @param chartsEnumList 目标的表格类型

*/

public void setComBiChart(List charts,int chartSeat,int xmlObjSeat,List chartsEnumList){

/**

  • 封装基础数据

*/

this.packageBasic(charts, chartSeat,chartsEnumList);

/**

  • 获得目标图表

*/

this.xmlObjectList.clear();

chartsEnumList.stream().forEach(x->{

XmlObject targetChart = x.getTargetChart(chartSeat,this.ctChart, xmlObjSeat);

this.xmlObjectList.add(targetChart);

});

//当前不是单元素

this.isSingle = false;

}

/**

  • 封装部分基础数据

  • @param charts

  • @param chartSeat

  • @param chartsEnumList

*/

private void packageBasic(List charts, int chartSeat,List chartsEnumList) {

if(CollectionUtils.isEmpty(charts)){

throw new RuntimeException(“模板中图表元素为null; !!!ctChart:null”);

}

if(CollectionUtils.isEmpty(chartsEnumList)){

throw new RuntimeException(“图表目标为null;!!!chartsEnum:null”);

}

/**

  • 目标

*/

this.chartsEnumList = chartsEnumList;

/**

  • 第N个位置图表

*/

this.xwpfChart = charts.get(chartSeat);

/**

  • 第N个位置可绘制区域的图表

*/

this.ctChart = this.xwpfChart.getCTChart();

}

/**

  • 执行模板数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值