没废话上代码,
使用easypoi导出时一般会用到一个实体类
提供一个示例代码:
实体类:
@Data
public class TestVO {private String id;@Excel(name = "字段1")private String findId1;@Excel(name = "字段2")private String findId2;}
工具类:
/*** 反射修改easypoi表头详细信息* @param entity 实体对象* @param fieIdName 修改的实体字段名称* @param nameTitle 想要修改为xx* @throws NoSuchFieldException* @throws IllegalAccessException*/public static void upDateTitle(Class<?> entity,String fieIdName,String nameTitle) throws NoSuchFieldException, IllegalAccessException {// 获取目标实体类的目标字段Field field = entity.getDeclaredField(fieIdName);// 获取该字段的注解Excel annotation = field.getAnnotation(Excel.class);// 获取Excel注解所持有的 InvocationHandlerInvocationHandler handler = Proxy.getInvocationHandler(annotation);Field hFile = handler.getClass().getDeclaredField("memberValues");// 设值私有可访问hFile.setAccessible(true);Map<Object, Object> map = (Map<Object, Object>) hFile.get(handler);// 获取配置信息map.put("name", nameTitle);}
使用效果:
List<TestVO > list = new ArrayList();//TODO 此处需要获取自己的数据//三个参数,导出标题名,sheetname,文件格式 HSSF:xls XSSH:xlsxExportParams params = new ExportParams("xxxxx表", "xxxx表", ExcelType.XSSF);Class<?> entity = TestVO.class;try {ExcelUtil.upDateTitle(entity, "approveDeptName", "测试测试");} catch (NoSuchFieldException e) {log.error("错误", e);} catch (IllegalAccessException e) {log.error("错误", e);}Workbook workbook = ExcelExportUtil.exportExcel(params, entity, list);//以流的形式导出ExcelUtil.excelDerive(response, workbook, "xxxx表");
感谢以下博主:
参考
扩展:
上边的方法不知道咋处理多个sheet所以此方法应运而生:
/*** 修改表头* @param workbook excel对象* @param sheetName sheet名称* @param row 第几行* @param cell 第几列* @param newStr 新字符串*/public static void upDateTitle(Workbook workbook,String sheetName,int row,int cell,String newStr) {Sheet sheet = workbook.getSheet(sheetName);Cell cell1 = sheet.getRow(row).getCell(cell);cell1.setCellValue(newStr);}
应用:
List<TestVO > list = new ArrayList();//TODO 此处需要获取自己的数据//三个参数,导出标题名,sheetname,文件格式 HSSF:xls XSSH:xlsxExportParams params = new ExportParams("xxxxx表头名称", "xxxxsheet名称", ExcelType.XSSF);Class<?> entity = TestVO.class;//try {// ExcelUtil.upDateTitle(entity, "approveDeptName", "测试测试");//} catch (NoSuchFieldException e) {// log.error("错误", e);//} catch (IllegalAccessException e) {// log.error("错误", e);//}Workbook workbook = ExcelExportUtil.exportExcel(params, entity, list);//序号从0开始,不是从1,从0开始,从0开始,从0开始重要的事情说三遍try {ExcelUtil.upDateTitle(workbook,"xxxxsheet名称",1,0,"测试测试");} catch (NullPointerException e) {log.error("错误", e);}//以流的形式导出ExcelUtil.excelDerive(response, workbook, "xxxx表");
欢迎各路大神留言讨论