导出数据生成Excel表格1.导出实现类使用export方法将指定数据导出为Excel表格文件/**将指定数据导出为Excel表格参数1:需要HttpServletResponse响应;浏览器响应;参数2:QuestVovo不需要;请求条件:可以根据请求条件过滤出数据库中需要导出的数据;如果需要导出所有数据库数据,可以去掉该参数;参数3:StringfileName为必填项;导出的Excel文件的名称;*/@Overridepublicvoidexport(HttpServletResponseresponse,QuestVovo,StringfileName)throwsIOException{try{/**(1)根据请求条件vo从数据库中获取符合条件的数据,(2)转换为对象类型需要导出。上面两步就可以完成ExecutingExportAuditInfo(example)封装在getData()方法中就是要导出的对象类型。从数据库中获取的数据需要转换成这个对象类型才能导出;对象的定义可以根据需要自定义*/Listlist=getData(vo);//设置浏览器响应的必要参数ServletOutputStreamout=response.getOutputStream();response.setContentType("multipart/form-data");response.setCharacterEncoding("utf-8");StringformFileName=newString(fileName.getBytes("utf-8"),"iso-8859-1");响应nse.setHeader("Content-Disposition","attachment;filename="+formFileName+".xlsx");//使用EasyExcel.write进行实际的导出操作EasyExcel.write(out,ExportAuditInfo.class)//CustomCellWriteHandler()方法设置Excel文件中表格的宽度为自适应宽度//createStyleStrategy()方法设置表格Excel文件样式.registerWriteHandler(newCustomCellWriteHandler()).registerWriteHandler(this.createStyleStrategy()).autoCloseStream(true)//sheet设置导出Excel表格的sheet名称//doWrite方法负责写入List数据导出到Excel.sheet("审计报警数据").doWrite(list);out.flush();}catch(Exceptione){LOGGER.error("{},{},{}",DefaultErrorCode.EXCEL_EXPORT_ERROR.getCode(),DefaultErrorCode.EXCEL_EXPORT_ERROR.getMessage(),DefaultErrorCode.EXCEL_EXPORT_ERROR.getContent(),e);}}/**定义CustomCellWriteHandler()方法,将Excel文件中的表格宽度设置为自适应宽度(可直接复用,无需更改)*/publicclassCustomCellWriteHandler扩展AbstractColumnWidthStyleStrategy{privateMap>CACHE=newHashMap<>();@OverrideprotectedvoidsetColumnWidth(WriteSheetHolderwriteSheetHolder,ListcellDataList,Cellcell,Headhead,Integerinteger,BooleanisHead){booleanneedSetWidth=isHead||}!CollectionUtils.isEmpty(cellDataList);if(needSetWidth){MapmaxColumnWidthMap=CACHE.get(writeSheetHolder.getSheetNo());如果(maxColumnWidthMap==null){maxColumnWidthMap=newHashMap<>();CACHE.put(writeSheetHolder.getSheetNo(),maxColumnWidthMap);}整数columnWidth=this.dataLength(cellDataList,cell,isHead);if(columnWidth>=0){if(columnWidth>255){columnWidth=255;}整数maxColumnWidth=maxColumnWidthMap.get(cell.getColumnIndex());如果(maxColumnWidth==null||columnWidth>maxColumnWidth){maxColumnWidthMap.put(cell.getColumnIndex(),columnWidth);writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(),columnWidth*256);}}}}privateIntegerdataLength(ListcellDataList,Cellcell,BooleanisHead){if(isHead){returncell.getStringCellValue().getBytes().length;}else{CellDatacellData=cellDataList.get(0);CellDataTypeEnumtype=cellData.getType();如果(类型==null){返回-1;}else{开关(类型){案例字符串:返回cellData.getStringValue().getBytes().length;caseBOOLEAN:返回cellData.getBooleanValue().toString().getBytes().length;案例编号:返回cellData.getNumberValue().toString().getBytes().length;默认值:返回-1;}}}}}/**createStyleStrategy()方法设置Excel文件的表格样式(无需修改可直接复用)*/privateHorizo??ntalCellStyleStrategycreateStyleStrategy(){//headerstrategyWriteCellStyleheadWriteCellStyle=newWriteCellStyle();//背面设置为红色headWriteCellStyle.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());WriteFontheadWriteFont=newWriteFont();headWriteFont.setFontHeightInPoints((短)10);headWriteCellStyle.setWriteFont(headWriteFont);//内容策略WriteCellStylecontentWriteCellStyle=newWriteCellStyle();contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);//下边框内容WriteCellStyle.setBorderLeft(BorderStyle.THIN);//右边框contentWriteCellStyle.setBorderRight(BorderStyle.setTHIN);//r(BorderStyle.THIN);//上边框WriteFontcontentWriteFont=newWriteFont();//字体大小contentWriteFont.setFontHeightInPoints((short)10);contentWriteCellStyle.setWriteFont(contentWriteFont);//这个策略是head的样式内容返回水平单元格样式策略;}2.导出实体类ExportAuditInfo注解@ExcelProperty该注解用于指定Excel("")列名属性