项目里尝试了利用Apache的POI工具生成Excel表格
然后发现操作起来还是很简单的
贴一下代码,里面都有注释
常用组件:
HSSFWorkbook excel的文档对象
HSSFSheet excel的表单
HSSFRow excel的行
HSSFCell excel的格子单元
HSSFFont excel字体
样式:
HSSFCellStyle cell样式
然后具体的方法需要使用的话可以自己查文档,上网搜索,很简单很方便的
-
第一步,导入依赖
<!-- poi,导出Excel --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.1</version> </dependency>
-
操作Excel代码
/** * @function: 下载导出Excel * @param sheetName 表格Sheet名 * @param titles 表格第一行(标题行) * @param datas 表格数据,String类型的二维数组 */ public static HSSFWorkbook downloadExcel(String sheetName, String[] titles, String[][] datas) { // 1. 创建一个Excel文件对象 HSSFWorkbook workbook = new HSSFWorkbook(); // 2. 创建样式,设置样式居中 HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HorizontalAlignment.CENTER); // 3. 在workbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = workbook.createSheet(sheetName); // 4. 在sheet中添加表头第0行,就是标题行 HSSFRow row = sheet.createRow(0); // 5. 声明列对象,并创建标题 HSSFCell cell = null; for (int i = 0, length = titles.length; i < length; i++) { cell = row.createCell(i); cell.setCellValue(titles[i]); //设置样式 cell.setCellStyle(style); } // 6. 创建内容 for (int i = 0, size = datas.length; i < size; i++) { row = sheet.createRow(i + 1); for (int j = 0, length = datas[i].length; j < length; j++) { //将内容按顺序赋给对应的列对象 cell=row.createCell(j); cell.setCellValue(datas[i][j]); //居中显示 cell.setCellStyle(style); } } return workbook; }
-
Controller接受前端请求,返回下载文档
@GetMapping("/download") public void download(HttpServletResponse response) { //查询所有员工 BasePage basePage = new BasePage(); basePage.setPageNum(1); basePage.setPageSize(10); PageInfo<CustomerModel> allCustomer = customerServices.getAllCustomer(basePage); List<CustomerModel> list = allCustomer.getList(); //表格标题,就是模型的属性名 String[] titles = {"顾客ID", "顾客姓名", "顾客职业", "顾客电话", "顾客邮箱"}; //将list集合数据变成String类型二维的数组,行数+列数 String[][] datas = new String[list.size()][titles.length]; for (int i = 0, size = list.size(); i < size; i++) { //赋值 datas[i][0] = String.valueOf(list.get(i).getCustId()); datas[i][1] = list.get(i).getCustName(); datas[i][2] = list.get(i).getCustProfession(); datas[i][3] = list.get(i).getCustPhone(); datas[i][4] = list.get(i).getCustEmail(); } //表格sheet名 String sheetName = "员工信息表"; //调用common下的Excel导出方法,导出Excel HSSFWorkbook workbook = DownloadExcel.downloadExcel(sheetName, titles, datas); try { //文件名,需要编码成ISO8859-1 String fileName = new String("员工信息表.xls".getBytes("UTF-8"), "ISO8859-1"); //设置响应头,返回前端下载文件 response.setHeader("content-Disposition", "attachment;filename=" + fileName); workbook.write(response.getOutputStream()); } catch (Exception e) { e.printStackTrace(); } }
-
最后前端请求,成功