300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 基于Easy-poi实现多Sheet页以及动态表头的excel表格的导出

基于Easy-poi实现多Sheet页以及动态表头的excel表格的导出

时间:2024-07-21 05:03:21

相关推荐

基于Easy-poi实现多Sheet页以及动态表头的excel表格的导出

需求描述

生成包含多个Sheet页的Excel表格,并且每个Sheet的表头是动态的。

设计方案

一个workBook可以分为多个Sheet页,每一个Sheet页面又可以分为title,entity,data 3个部分。

详解

title:是一个ExportParams类实例,可以用于设置sheet页名和表格名

ExportParams userExportParams = new ExportParams("明细","方案1");

结果:方案1为Sheet页名,明细为表格最上面一行的题目。

entity:表头,可以是一个类,也可以是一个List。

动态表头需要生成一个List;静态表头可以使用对类加注解的方式。

ExcelExportEntity entity1 = new ExcelExportEntity("姓名","name");ExcelExportEntity entity1 = new ExcelExportEntity("年龄","age"); ExcelExportEntity entity1 = new ExcelExportEntity("班级","class"); entityList.add(entity1);

data:表格中的数据,一个List<Map<K,V>>。

表格中的每一行数据都是一个Map<K,V>,多行数据就成了一个List。

dataMap.put("name","张三");dataMap.put("age","17");dataMap.put("class","高三1班");

Sheet:一个有固定Key值的Map<String,Object>。

多个Sheet页可以用一个List<Map<String,Object>>来进行存储。

sheetMap.put("title", userExportParams );sheetMap.put("entityList", entityList);sheetMap.put("data", dataMap);

注意:“title”,“entityList”,"data"等key值是固定不变的,不能进行改动,每个Sheet页都必须包含这三个元素。

输出

可以输出到磁盘文件,也可以输出到二进制流。

//输出到文件Workbook workbook = new HSSFWorkbook();for(Map<String,Object> map : sheetList) {ExcelExportService server = new ExcelExportService();ExportParams param = (ExportParams) map.get("title");@SuppressWarnings("unchecked")List<ExcelExportEntity> entity = (List<ExcelExportEntity>) map.get("entityList");Collection<?> data = (Collection<?>) map.get("data");server.createSheetForMap(workbook, param, entity, data);}File targetFile = new File("D:\\excel\\temp.xls");FileOutputStream fos = new FileOutputStream(targetFile);workbook.write(fos);fos.close();

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。