将数据库数据导入Excel表格

目录

导入依赖

生成表格代码


导入依赖

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

生成表格代码

ps:Shift + 鼠标滑轮可左右滚动,方便观看

 public void Test(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //要输出的文件路径,但如果使用下面第一种方式,则此路径不生效
     	String path = "C:"+File.separator+"上课文件"+File.separator; 
        String filename = path + "aaa.xlsx"; //输出的文件名
     
        Workbook workbook = new XSSFWorkbook(); //创建工作簿
        Sheet sheet = workbook.createSheet("测试表");//创建表名
        //创建单元格并写入数据,这一句相当于“行”,0就是第一行
        Row rowHead = sheet.createRow(0);
     	//下面的就是这一行的“列”,这里从0到6,共7列。 
        rowHead.createCell(0).setCellValue("主键ID");
        rowHead.createCell(1).setCellValue("姓名");
        rowHead.createCell(2).setCellValue("年龄");
        rowHead.createCell(3).setCellValue("性别");
        rowHead.createCell(4).setCellValue("身高");
        rowHead.createCell(5).setCellValue("生日");
        rowHead.createCell(6).setCellValue("创建时间");

        List<Stu> allStu = stuService.findAllStu();//获取数据库中的数据 allStu
		//根据获取的数据,循环一行一行的向Excel表格中插入数据
        for (int i = 0; i < allStu.size(); i++) {
            int j = 0;//下面的j++ 表示第几列,其实写0,1,2,3... 也可以
            Row row = sheet.createRow(i + 1);//这里就跟上面一样了,行 列什么的
            //这里面要做什么非空判断,条件筛选什么的根据自己的业务来做就好了
            row.createCell(j++).setCellValue(allStu.get(i).getId());
            row.createCell(j++).setCellValue(allStu.get(i).getName());
            row.createCell(j++).setCellValue(allStu.get(i).getAge());
            row.createCell(j++).setCellValue(allStu.get(i).getSex());
            row.createCell(j++).setCellValue(allStu.get(i).getHeight());
            row.createCell(j++).setCellValue(allStu.get(i).getBirthday());
            row.createCell(j++).setCellValue(allStu.get(i).getDate());
        }
     
// 第一种:这种形式只要访问接口,就会在线下载表格文件,这时上面的path路径不会生效,他还是会在默认的位置生成文件
        //设置传出的类型
        response.setContentType("application/json");
        //设置编码格式
        response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
        //缓冲
        response.flushBuffer();
        //将excel通过文件传输流写出
        workbook.write(response.getOutputStream());

// 第二种:这种形式直接按照指定的path路径来生成,Excel表格文件直接声称在指定位置
        //创建流用于输出
        //FileOutputStream fileOutputStream = new FileOutputStream(filename);
        //fileOutputStream.close();//关闭资源

        workbook.close();//关闭资源
    }

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值