ApachePOI是一个用Java编写的免费开源跨平台JavaAPI。ApachePOI为Java程序提供API以读取和写入MicrosoftOffice格式的文件。本文主要介绍通过SpringBoot集成POI工具实现Excel的导入导出功能。@pdaiSpringBootIntegration文件-集成POIExcel导入导出知识准备POIPOI中的基本概念是什么实现案例Pom依赖导出Excel和导入Excel示例源码参考文章更多内容知识准备,需要了解POI工具和POI对Excel通信中的对象。什么是POIA?ApachePOI是一个用Java编写的免费开源跨平台JavaAPI。ApachePOI为Java程序提供API以读取和写入MicrosoftOffice格式的文件。POI是“PoorObfuscationImplementation”的首字母缩写,意思是“模糊实现的简洁版”。ApachePOI是一个JavaAPI,用于创建和维护符合OfficeOpenXML(OOXML)标准和Microsoft的OLE2复合文档格式(OLE2)的操作。它可以使用Java读取和创建、修改MSExcel文件。此外,您还可以使用Java读取和创建MSWord和MSPowerPoint文件。有关详细信息,请参阅官方文档。POI中基本概念生成的xls和xlsx有什么区别?POI和Excel中对象的封装是什么对应关系?生成xls和xlsx有什么区别?XLSXLSX只能打开xls格式,不能直接打开xlsx格式可以直接打开xls,xlsx格式只有65536行,256列可以有1048576行,16384列占用空间大,空间小,计算速度会fasterPOIforExcel对象的封装对应关系如下:ExcelPOIXLSPOIXLSX(Excel2007+)Excel文件HSSFWorkbook(xls)XSSFWorkbook(xlsx)Excel工作表HSSFSheetXSSFSheetExcel行HSSFRowXSSFRowExcel单元格HSSFCellXSSFCellExcel单元格样式HSSFCellStyleHSSFCellStyleExcel颜色HSSFColorXSSFColor实例集成用户案例列表并导入用户列表。pom依赖引入poi的依赖包org.apache.poipoi5.2.2org.apache.poipoi-ooxml5.2.2导出ExcelUserController中导出的方法@ApiOperation("下载Excel")@GetMapping("/excel/download")publicvoiddownload(HttpServletResponseresponse){try{SXSSFWorkbookworkbook=userService.generateExcelWorkbook();响应.重置();response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition","attachment;filename=user_excel_"+System.currentTimeMillis()+".xlsx");OutputStreamos=response.getOutputStream();工作簿.write(os);工作簿.d姿势();}catch(Exceptione){e.printStackTrace();}}UserServiceImple中导出Excel的主要方法privatestaticfinalintPOSITION_ROW=1;privatestaticfinalintPOSITION_COL=1;/***@returnSXSSFWorkbook*/@OverridepublicSXSSFWorkbookgenerateExcelWorkbook(){SXSSFWorkbookworkbook=newSXSSFWorkbook();工作表sheet=workbook.createSheet();int行=POSITION_ROW;intcols=POSITION_COL;//表头Rowhead=sheet.createRow(rows++);String[]columns=newString[]{"ID","Name","Email","Phone","Description"};int[]colWidths=newint[]{2000,3000,5000,5000,8000};CellStyleheadStyle=getHeadCellStyle(工作簿);对于(inti=0;igetUserList(){returnCollections.singletonList(User.builder().id(1L).userName("pdai").email("pdai@pdai.tech").phoneNumber(121231231231L).description("你好世界").build());}privateCellStylegetHeadCellStyle(Workbookworkbook){CellStylestyle=getBaseCellStyle(workbook);//填充样式.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());style.setFillPattern(FillPatternType.SOLID_FOREGROUND);returnstyle;}privateCellStylegetBodyCellStyle(Workbookworkbook){returngetBaseCellStyle(workbook);}privateCellStylegetBaseCellStyle(Workbookworkbook){CellStylestyle=workbook.createCellStyle();//字体字体font=workbook.createFont();字体。setBold(true);style.setFont(font);//对齐style.setAlignment(Horizo??ntalAlignment.CENTER);style.setVerticalAlignment(VerticalAlignment.TOP);//边框style.setBorderBottom(BorderStyle.THIN);style.setBottomBorderColor(IndexedColors.BLACK.getIndex());style.setBorderLeft(BorderStyle.THIN);style.setLeftBorderColor(IndexedColors.BLACK.getIndex());style.setBorderRight(边框erStyle.THIN);style.setRightBorderColor(IndexedColors.BLACK.getIndex());style.setBorderTop(BorderStyle.THIN);style.setTopBorderColor(IndexedColors.BLACK.getIndex());returnstyle;}导入导出的excel如下Excel我们导入上面导出的excel文件UserController中导入的方法@ApiOperation("UploadExcel")@PostMapping("/excel/upload")publicResponseResultupload(@RequestParam(value="file",required=true)MultipartFilefile){try{userService.upload(文件.getInputStream());}catch(Exceptione){e.printStackTrace();返回ResponseResult.fail(e.getMessage());}returnResponseResult.success();}UserServiceImple中导入Excel的主要方法@Overridepublicvoidupload(InputStreaminputStream)throwsIOException{XSSFWorkbookbook=newXSSFWorkbook(inputStream);XSSFSheet表=book.getSheetAt(0);//在这里添加一些验证//解析数据intcols;对于(inti=POSITION_ROW;i