JAVA报表开发-POI处理EXCEL-导出(简单样式)

1、实现用户数据的导出

一、需求

我们先来一个简单的excel的导出,不要求有什么样式。就是和jxl导出的内容一样就可以

二、基本思路

1、创建一个全新的工作薄

2、在新的工作薄中创建一个新的工作表

3、在工作表创建第一行作为标题行,标题固定

4、从第二行循环遍历创建,有多少条用户数据就应该创建多少行

5、把每一个user对象的属性放入到相应的单元格中

三、代码实现

   public void downLoadXlsx(HttpServletResponse response) throws Exception {
        /**
         * 1、 创建一个全新的工作薄
         * 2、 创建全新的工作表
         * 3、 处理固定的标题 编号 姓名 手机号 入职日期 现住址
         * 4、 从第二行开始循环遍历 向单元格中放入数据
         */
        //1、创建一个全新的工作薄
        Workbook workbook = new XSSFWorkbook();
        //2、创建全新的工作表
        Sheet sheet = workbook.createSheet("用户数据");

        //设置列宽
        sheet.setColumnWidth(0,5*256); //1代表的是一个标准字母宽度的256分之一
        sheet.setColumnWidth(1,8*256);
        sheet.setColumnWidth(2,15*256);
        sheet.setColumnWidth(3,15*256);
        sheet.setColumnWidth(4,30*256);


        //3、处理固定的标题 编号 姓名 手机号 入职日期 现住址
        String [] titles = new String[]{"编号","姓名","手机号","入职日期","现住址","所在城市"};
        Row tittleRow = sheet.createRow(0); //创建第一行
        Cell cell = null;
        for (int i = 0; i < 6; i++) {
            cell=tittleRow.createCell(i);//创建单元格  列
            cell.setCellValue(titles[i]);//写入内容
        }
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd");

        List<User> userList = userMapper.selectAll();
        int rowIndex=1;
        for (User user : userList) {
            Row row = sheet.createRow(rowIndex); //创建行
            cell = row.createCell(0); //创建列
            cell.setCellValue(user.getId());

            cell = row.createCell(1);
            cell.setCellValue(user.getUserName());

            cell = row.createCell(2);
            cell.setCellValue(user.getPhone());

            cell = row.createCell(3);
            cell.setCellValue(simpleDateFormat.format(user.getHireDate()));

            cell = row.createCell(4);
            cell.setCellValue(user.getAddress());

            cell = row.createCell(5);
            cell.setCellValue(user.getCity());

            rowIndex++;
        }

        //文件导出 一个流(outputStream)两个头(文件的打开方式 in-line attachement, 文件的下载时mime类型)
        String filename="员工数据.xlsx";
        response.setHeader("content-disposition","attachment;filename="+new String(filename.getBytes(),"ISO8859-1"));
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        workbook.write(response.getOutputStream());

    }

 

 

 

 

 

posted @ 2022-05-28 16:17  KwFruit  阅读(697)  评论(0编辑  收藏  举报