asp导出word中文乱码_Java 徒手导出csv文件

导述

平常程序中导出csv都是采用第三方工具包,使用第三方工具包可以很方便的导出,但前提是项目中需要加入一个新的依赖。在某些情况下,只是简单的导出csv,不希望增加项目依赖。那就看下如何直接写出csv文件吧

在写出csv前,我们首先要了解csv格式。

csv 格式简介

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。

204de2cc7438db4673d5989e5ce9c515.png

流输出:PrintWriter

java 中流类图

c462297cd1222bf38986d918e0bd1399.png

PrintWriter 是字符类型的打印输出流,它继承于Writer。

代码实现

实现逻辑主要分为:

  1. 处理每行的特殊格式字符。
  2. 每个属性之间添加逗号分隔。
  3. 输出
/**
     * 写出到csv文件
     * @param csvFileName
     * @param data
     * @throws FileNotFoundException
     */
    public void wirterCsv(String csvFileName, List<String[]> data) 
    throws FileNotFoundException, UnsupportedEncodingException {
        File csvOutputFile = new File(csvFileName);
        try (PrintWriter pw = new PrintWriter(csvOutputFile, "GBK")) {
            data.stream()
                .map(this::convertToCSV)
                .forEach(pw::println);
        }
    }
  
    public String convertToCSV(String[] data) {
        return Stream.of(data)
            .map(this::escapeSpecialCharacters)
            .collect(Collectors.joining(","));
    }

    public String escapeSpecialCharacters(String data) {
        String escapedData = data.replaceAll("R", " ");
        if (data.contains(",") || data.contains(""") || data.contains("'")) {
            data = data.replace(""", """");
            escapedData = """ + data + """;
        }
        return escapedData;
    }

在写出过程中,要留意乱码问题,本文设置为GBK格式防止中文乱码

总结

经常为了避免重复造轮子,使用了很多便利的工具。但使用轮子的前提是,自己能创造轮子。尤其是编程基础,轮子用的太多,自己不会走了,就比较尴尬。

基础编程属于通过练习的方式尝试,偶尔跑掉轮子,试试自己还能跑起来不。

为方便交流,可以加个关注吆!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值