数据库和Excel相互转换

1、实现把数据库的数据输入到Excel表格中

依赖

 <!--poi-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.9</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.9</version>
        </dependency>

工具类

 @RequestMapping("/excelXz")
    @ResponseBody
    public String excelXz(HttpServletResponse response) throws JsonProcessingException {
        Map<String, Object> map = new HashMap<String, Object>();
        List<StudyUser> studyUsers = studyCircularService.selSearch(map);
        // 需要导出的数据
        System.out.println("studyUsers:" + studyUsers);
        if (studyUsers != null && studyUsers.size() > 0) {
            String fileName = "studyUsers.xls";
            try {
                response.setHeader(
                        "Content-disposition",
                        "attachment;filename="
                                + new String(fileName.getBytes("gb2312"),
                                "ISO8859-1"));
            } catch (UnsupportedEncodingException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }// 设置文件头编码格式
            response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");// 设置类型
            response.setHeader("Cache-Control", "no-cache");// 设置头
            response.setDateHeader("Expires", 0);// 设置日期头

            // 这里是表格的头部
            String[] titles = {"序号", "学号", "姓名", "班级", "专业", "违纪时间",
                    "违纪类型", "处分级别", "处分名称"};

            try {
                // 第一步,创建一个workbook,对应一个Excel文件
                HSSFWorkbook workbook = new HSSFWorkbook();

                // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
                HSSFSheet hssfSheet = workbook.createSheet("sheet1");

                // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short

                HSSFRow row = hssfSheet.createRow(0);
                // 第四步,创建单元格,并设置值表头 设置表头居中
                HSSFCellStyle hssfCellStyle = workbook.createCellStyle();

                // 居中样式
                hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

                HSSFCell hssfCell = null;
                for (int i = 0; i < titles.length; i++) {
                    hssfCell = row.createCell(i);// 列索引从0开始
                    hssfCell.setCellValue(titles[i]);// 列名1
                    hssfCell.setCellStyle(hssfCellStyle);// 列居中显示
                }
                // 第五步,写入实体数据

                for (int i = 0; i < studyUsers.size(); i++) {
                    row = hssfSheet.createRow(i + 1);
                    StudyUser studyUser = studyUsers.get(i);
                    // 第六步,创建单元格,并设置值
                    row.createCell(0).setCellValue(i + 1);
                    row.createCell(1).setCellValue(studyUser.getSno());
                    row.createCell(2).setCellValue(studyUser.getName());
                    row.createCell(3).setCellValue(studyUser.getGrad());
                    row.createCell(4).setCellValue(studyUser.getMajor());
                    row.createCell(5).setCellValue(studyUser.getTimes());
                    row.createCell(6).setCellValue(studyUser.getType());
                    row.createCell(7).setCellValue(studyUser.getStudyCircular().getPunLevel());
                    row.createCell(8).setCellValue(studyUser.getStudyCircular().getPunName());
                }

                // 第七步,将文件输出到客户端浏览器
                try {
                    workbook.write(response.getOutputStream());
                    response.getOutputStream().flush();
                    response.getOutputStream().close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } catch (Exception e) {
                System.out.println("导出信息失败!");
                e.printStackTrace();
            }
        } else {
            System.out.println("查询结果为空!");
        }
        return "成功";
    }

2、实现把数据库的数据输入到Excel表格中

推荐博客:https://blog.csdn.net/qq_27328375/article/details/111641363
posted @ 2021-10-10 18:33  有何和不可  阅读(72)  评论(0)    收藏  举报