软件开发定制springboot+easypoi模板导出Excel 动态表头+多表格(一个sheet)

1.需求:软件开发定制将此页面的几个表格导出

软件开发定制其中表头中的仓库 软件开发定制集散地是是动态生成的。
首先制作Excel模板:

代码:

@Resource	private RedisService redisService;	@Override	public void assignModel(EventInfo info, HttpServletResponse response) {		AssginModelRes res=new AssginModelRes();    	Object obj = redisService.getObj("modelExport-"+info.getId());		if (null == obj) {			throw new CustomException("软件开发定制找不到指定的事件!");		}		res = (AssginModelRes) obj;    	try {            // 获取workbook对象            // 单sheet或多sheet 软件开发定制只需要更改此处即可            Workbook workbook = exportAssignModelByTemplate(res) ;            // 设置excel软件开发定制的文件名称            String excelName = "软件开发定制资源分配模型" ;            // 软件开发定制重置响应对象            response.reset();            // 当前日期,用于导出文件名称            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");            String dateStr = "["+excelName+"-"+sdf.format(new Date())+"]";            // 指定下载的文件名--设置响应头            response.setHeader("Content-Disposition", "attachment;filename=" +dateStr+".xls");            response.setContentType("application/vnd.ms-excel;charset=UTF-8");            response.setHeader("Pragma", "no-cache");            response.setHeader("Cache-Control", "no-cache");            response.setDateHeader("Expires", 0);            // 写出数据输出流到页面            OutputStream output = response.getOutputStream();            BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);            workbook.write(bufferedOutPut);            bufferedOutPut.flush();            bufferedOutPut.close();            output.close();        } catch (IOException e) {            e.printStackTrace();        }	}private Workbook exportAssignModelByTemplate(AssginModelRes res) throws IOException {	        // 手动创建导出数据,需根据具体业务进行查询 	        // sheet1内容	        Map<String,Object> map = new HashMap<String, Object>() ;	        map.put("w1", res.getT1().getT1header().get(0)); 	        map.put("w2", res.getT1().getT1header().get(1)); 	        map.put("w3", res.getT1().getT1header().get(2));    	        map.put("resultList1",res.getT1().getData());	        for(int i=0;i<res.getT2().getT2header().size();i++) {	        	 map.put("p"+(i+1), res.getT2().getT2header().get(i));	        }	        map.put("resultList2",res.getT2().getData());	        map.put("resultList3",res.getT3().getData());	        map.put("resultList4_1",res.getT4().get(0).getData());	        map.put("resultList4_2",res.getT4().get(1).getData());	        map.put("resultList4_3",res.getT4().get(2).getData());	        // 设置导出配置	        // 获取导出excel指定模版			TemplateExportParams template = new TemplateExportParams("templates/model.xls", true);	        // 导出excel	        return ExcelExportUtil.exportExcel(template , map);	    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

主要是在exportAssignModelByTemplate方法内创建map将数据动态地塞进模板里,数据实体类AssginModelRes 为

package cn.com.reformer.model.comandestimate.assignmodel;import java.io.Serializable;import java.util.List;import lombok.Data;@Datapublic class AssginModelRes implements Serializable{	/**	 * 	 */	private static final long serialVersionUID = 1L;	/**	 * 表格1	 */	private Table1 t1;	/**	 * 表格2	 */	private Table2 t2;	/**	 * 表格3	 */	private Table3 t3;	/**	 * 表格4	 */	private List<Table4> t4;	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
@Datapublic class Table1 implements Serializable {	/**	 * 	 */	private static final long serialVersionUID = 1L;	/*	 * 表头 最近的三个仓库	 */	private List<String> t1header;	/**	 * 表格数据	 */	private List<Table1Data> data;	}@Datapublic class Table2 implements Serializable {	/**	 * 	 */	private static final long serialVersionUID = 1L;	/**	 * 表头:事件和次生事件的地点.	 * 	 * 	 */	private  List<String> t2header;	private List<Map<String, Object>> data;	}@Datapublic class Table3 implements Serializable {	/**	 * 	 */	private static final long serialVersionUID = 1L;	/*	 * 表头	 */	private List<String> t3header;	private List<Map<String, Object>> data;}/* * 表4:分配结果 */@Datapublic class Table4 implements Serializable {	/**	 * 	 */	private static final long serialVersionUID = 1L;	/*	 * 表头:仓库名、集散地	 */	private Table4Header header;	private List<Map<String, Object>> data;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

数据格式示例:

{    "msg": "操作成功",    "code": 200,    "data": {        "t1": {            "t1header": [                "1209测试仓库",                "研判测试仓库",                "测试仓库"            ],            "data": [                {                    "time": "2020-09-03 19:27:17",                    "w1": 20,                    "w2": 14,                    "w3": 29,                    "sum": 63                },                {                    "time": "2020-09-03 20:27:17",                    "w1": 15,                    "w2": 11,                    "w3": 20,                    "sum": 46                },                {                    "time": "2020-09-03 21:27:17",                    "w1": 27,                    "w2": 21,                    "w3": 43,                    "sum": 91                }            ]        },        "t2": {            "t2header": [                "湖北省武汉市洪山区东湖风景区街道花城大道",                "湖北省武汉市洪山区和平街道悠贝·菁华幼儿园花样年·花郡东区",                "湖北省武汉市武昌区徐家棚街街道油料所社区",                "湖北省武汉市武昌区水果湖街街道万达御湖世家",                "湖北省武汉市武昌区水果湖街街道观星传媒万达尊"            ],            "data": [                {                    "time": "2020-09-03 19:27:17",                    "p1": 21,                    "p2": 17,                    "p3": 12,                    "p4": 15,                    "p5": 28,                    "sum": 93                },                {                    "time": "2020-09-03 20:27:17",                    "p1": 16,                    "p2": 28,                    "p3": 9,                    "p4": 17,                    "p5": 23,                    "sum": 93                },                {                    "time": "2020-09-03 21:27:17",                    "p1": 28,                    "p2": 30,                    "p3": 17,                    "p4": 29,                    "p5": 21,                    "sum": 125                }            ]        },        "t3": {            "t3header": [                "湖北省武汉市洪山区东湖风景区街道花城大道",                "湖北省武汉市洪山区和平街道悠贝·菁华幼儿园花样年·花郡东区",                "湖北省武汉市武昌区徐家棚街街道油料所社区",                "湖北省武汉市武昌区水果湖街街道万达御湖世家",                "湖北省武汉市武昌区水果湖街街道观星传媒万达尊"            ],            "data": [                {                    "warename": "1209测试仓库",                    "p1": 1.26,                    "p2": 1.05,                    "p3": 1.37,                    "p4": 1.5,                    "p5": 1.31                },                {                    "warename": "研判测试仓库",                    "p1": 1.16,                    "p2": 1.25,                    "p3": 1.02,                    "p4": 1.7,                    "p5": 1.57                },                {                    "warename": "测试仓库",                    "p1": 1.53,                    "p2": 1.29,                    "p3": 1.07,                    "p4": 1.15,                    "p5": 1.08                }            ]        },        "t4": [            {                "header": {                    "ware1": "1209测试仓库",                    "places": [                        "湖北省武汉市洪山区东湖风景区街道花城大道",                        "湖北省武汉市洪山区和平街道悠贝·菁华幼儿园花样年·花郡东区",                        "湖北省武汉市武昌区徐家棚街街道油料所社区",                        "湖北省武汉市武昌区水果湖街街道万达御湖世家",                        "湖北省武汉市武昌区水果湖街街道观星传媒万达尊"                    ]                },                "data": [                    {                        "p0": "实际需求dj(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "实际需求zj(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "分配量∑χφ(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "满意度Rj(t)",                        "p1": 0.62,                        "p2": 0.59,                        "p3": 0.68,                        "p4": 0.6,                        "p5": 0.61                    }                ]            },            {                "header": {                    "ware1": "研判测试仓库",                    "places": [                        "湖北省武汉市洪山区东湖风景区街道花城大道",                        "湖北省武汉市洪山区和平街道悠贝·菁华幼儿园花样年·花郡东区",                        "湖北省武汉市武昌区徐家棚街街道油料所社区",                        "湖北省武汉市武昌区水果湖街街道万达御湖世家",                        "湖北省武汉市武昌区水果湖街街道观星传媒万达尊"                    ]                },                "data": [                    {                        "p0": "实际需求dj(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "实际需求zj(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "分配量∑χφ(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "满意度Rj(t)",                        "p1": 0.62,                        "p2": 0.59,                        "p3": 0.68,                        "p4": 0.6,                        "p5": 0.61                    }                ]            },            {                "header": {                    "ware1": "测试仓库",                    "places": [                        "湖北省武汉市洪山区东湖风景区街道花城大道",                        "湖北省武汉市洪山区和平街道悠贝·菁华幼儿园花样年·花郡东区",                        "湖北省武汉市武昌区徐家棚街街道油料所社区",                        "湖北省武汉市武昌区水果湖街街道万达御湖世家",                        "湖北省武汉市武昌区水果湖街街道观星传媒万达尊"                    ]                },                "data": [                    {                        "p0": "实际需求dj(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "实际需求zj(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "分配量∑χφ(t)",                        "p1": 21,                        "p2": 17,                        "p3": 12,                        "p4": 15,                        "p5": 28                    },                    {                        "p0": "满意度Rj(t)",                        "p1": 0.62,                        "p2": 0.59,                        "p3": 0.68,                        "p4": 0.6,                        "p5": 0.61                    }                ]            }        ]    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249

最终导出的Excel 为:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发