springboot框架中-java实现Excel、csv、txt 文件的批量导出数据-亲手实测(二)-csv & txt

接上文的Excel导出,有朋友在评论找其他两种的,才想起更新来,下面直接贴出csv和 txt导出的代码:

参数说明,如果有不明白的可以参考excel导出,或者直接下方评论:

  1. rows:为从数据库中查询出的结果集合,我这里并没有拿实体类作映射,其结构见后面贴的图;

  2. filePathAndName:文件下载路径,返回给前端,打开便直接下载;

  3. file:存于服务端目录的相对路径;

private JsonResult exportCsv(List<Map> list, File file, String result) { //导出csv文件
    try {
        log.info("filepath:" + file.getPath());
        file.createNewFile();
        FileOutputStream stream;// provides file access
        OutputStreamWriter writer;// writes to the file
        stream = new FileOutputStream(file);
        writer = new OutputStreamWriter(stream, "gb2312");

        //首行
        Iterator<Map> iterator = list.iterator();
        Map map = iterator.next();
        Set set = map.keySet(); //col 集合
        Iterator iterator1 = set.iterator();
        while (iterator1.hasNext()) {
            writer.write(iterator1.next() + ",");
        }

        //第二行开始都是数据
        Iterator<Map> iterator2 = list.iterator(); //这个地方不要用上面的iterator,切记,会从第二条数据开始写
        while (iterator2.hasNext()) {
            writer.write("\r\n"); //回车 进入下一行
            Map map1 = iterator2.next();
            Set<String> set1 = map.keySet();
            Iterator it = set1.iterator();
            while (it.hasNext()) {
                Object o = map1.get(it.next() + "");
                writer.write(o + ","); //逗号在csv文件中相当于tab键 同一行内 右移一个单元格的作用
            }
        }
        writer.close();
        stream.close();
        return JsonResult.success(result);
    } catch (Exception e) {

        e.printStackTrace();
        return JsonResult.fail("下载失败");
    }
}

简单粗暴点 txt:

private JsonResult exportTxt(List<Map> list, File file, String result) {

    log.info("filepath:" + file.getPath());
    try {
        file.createNewFile();
        FileOutputStream stream;// provides file access
        OutputStreamWriter writer;// writes to the file
        stream = new FileOutputStream(file);
        writer = new OutputStreamWriter(stream, "gb2312");

        //写首行
        Iterator<Map> iterator = list.iterator();
        Map map = iterator.next();
        Set set = map.keySet(); //col 集合
        Iterator iterator1 = set.iterator();
        while (iterator1.hasNext()) {
            writer.write(iterator1.next() + ",");
        }

        Iterator<Map> iterator2 = list.iterator(); //这个地方不要用上面的iterator,切记,会从第二条数据开始写
        //第二行开始都是数据
        while (iterator2.hasNext()) {
            writer.write("\r\n");
            Map map1 = iterator2.next();
            Iterator it = set.iterator();
            while (it.hasNext()) {
                Object o = map1.get(it.next() + "");
                writer.write(o + ",");
            }
        }
        writer.close();

        return JsonResult.success(result);
    } catch (Exception e) {
        e.printStackTrace();
        return JsonResult.fail("下载失败");
    }
}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值