一.導入poi依賴
<!-- poi實現excel導入導出--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.15</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> </dependency>
主要用到該依賴下的兩個類:XSSFWorkbook和HSSFWorkbook類。
XSSFWorkbook是Excel中的xlsx版本。
HSSFWorkbook是xls版本。
我使用的是xlsx版本的。
二.詳細代碼
業務層:
@Service public class GoodsServiceImpl implements GoodsService { @Autowired private GoodsMapper goodsMapper; @Override public XSSFWorkbook show() { List<Goods> list = goodsMapper.selectByExample(null);//查出數據庫數據 XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet("Goods");//創建一張表 Row titleRow = sheet.createRow(0);//創建第一行,起始為0 titleRow.createCell(0).setCellValue("序號");//第一列 titleRow.createCell(1).setCellValue("名稱"); titleRow.createCell(2).setCellValue("數量"); titleRow.createCell(3).setCellValue("庫存"); int cell = 1; for (Goods goods : list) { Row row = sheet.createRow(cell);//從第二行開始保存數據 row.createCell(0).setCellValue(cell); row.createCell(1).setCellValue(goods.getGname());//將數據庫的數據遍歷出來 row.createCell(2).setCellValue(goods.getGprice()); row.createCell(3).setCellValue(goods.getTid()); cell++; } return wb; }
控制層:
@Controller public class GoodsController { @Autowired private GoodsService goodsService; @RequestMapping(value = "/export/goods",method = RequestMethod.GET) public void goodsExcel(HttpServletResponse response){ XSSFWorkbook wb =goodsService.show(); String fileName = "Goods報表.xlsx"; OutputStream outputStream =null; try { fileName = URLEncoder.encode(fileName,"UTF-8"); //設置ContentType請求信息格式 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); wb.write(outputStream); outputStream.flush(); outputStream.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
三.測試
運行項目,瀏覽器輸入請求地址:/export/goods 就會彈出保存文件地址。