基于java + easyExcel实现模板填充生成动态模板并设置指定单元格为下拉框样式

需求描述:java后端开发过程中,为了满足动态生成excel模板并设置指定单元格为下拉框,且下拉框的数据项来源为动态查询的需求,在基于easyExcel的情况下,使用模板填充的方式,完成该需求。

1. control层

public void getTemp(HttpServletResponse response) throws IOException{
    tempService.getTemp(response);
}

2. service层

void getTemp(HttpServletResponse response);

3. service实现类(模板获取及导出相关配置设定,业务逻辑处理等):

@Override
public void getTemp(HttpServletResponse response){
    
    //动态模板需填充的数据
    List data = new ArrayList<>();

    //下拉列表1数据项
    List selectList1 = new ArrayList<>();
    //下拉列表2数据项
    List selectList2 = new ArrayList<>();

    //将下拉列表数据放置在一个map中
    Map> selectMap = new HashMap<>();
    selectMap.put(1,selectList1);
    selectMap.put(2,selectList2);

    //此处firstRow为需要设置下拉框的起始行位置,可根据自身需求需要调整设置
    //此处lastRow为需要设置下拉框的截止行位置,可根据自身需求需要调整设置
    Integer firstRow = 0;
    Integet lastRow = 100;

    //使用模板填充导出的相关配置
    OutputStream out = null;
    BufferedOutputStream bos = null;
    try {
       //获取到已提前制作好的填充模板
        String templateFileName = FileUtil.getPath() + "template" + File.separator + "Temp.xlsx";

        //为动态生成的模板命名(带时间区分)
        String fileNameWithTime = "导入模板" + DateTimeUtil.formatDate(new Date(), DateTimeUtil.SHORT_TIME_FORMAT) + ".xlsx";

        //设置字符编码标准等
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode(fileNameWithTime,"utf-8");
        response.setHeader("Content-disposition", "attachment; filename=& 
  

                            
                        
                    
                    
                    

你可能感兴趣的:(java,servlet,开发语言)