跳至主要內容

opencsv-操作CSV文件

程序员李某某小于 1 分钟

opencsv-操作CSV文件

依赖

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>4.5</version>
</dependency>

读CSV文件

public class CsvReader {
    public static void main(String[] args) throws IOException {
        String csvFile = "D:\\test.csv";
        CSVReader reader = new CSVReader(new FileReader(csvFile));
        String[] nextLine;
        while ((nextLine = reader.readNext()) != null) {
            for (String cell : nextLine) {
                System.out.println(cell);
            }
        }
    }
}

写入CSV文件

public class CsvWriter {
    public static void main(String[] args) throws IOException {
        try {
            // 准备输出流
            ServletOutputStream outputStream = response.getOutputStream();
            // 文件名
            String filename="百万数据.csv";
            // 设置两个头 一个是文件的打开方式 一个是mime类型
            response.setHeader( "Content-Disposition", "attachment;filename="  + new String(filename.getBytes(),"ISO8859-1"));
            response.setContentType("text/csv");
            // 创建一个用来写入到csv文件中的writer
            CSVWriter writer = new CSVWriter(new OutputStreamWriter(outputStream,"utf-8"));
            // 先写头信息
            writer.writeNext(new String[]{"编号","姓名","手机号","入职日期","现住址"});

            // 如果文件数据量非常大的时候,我们可以循环查询写入
            int page = 1;
            int pageSize=200000;
            while (true) {  //不停地查询
                List<User> userList = this.findPage(page, pageSize);
                if (CollectionUtils.isEmpty(userList)) {  //如果查询不到就不再查询了
                    break;
                }
                // 把查询到的数据转成数组放入到csv文件中
                for (User user : userList) {
                    writer.writeNext(new String[]{user.getId().toString(),user.getUserName(),user.getPhone(),simpleDateFormat.format(user.getHireDate()),user.getAddress()});
                }
                writer.flush();
                page++;
            }
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
上次编辑于:
贡献者: 李元昊