欢迎访问宙启技术站
智能推送

java如何实现CSV文件导入与导出功能

发布时间:2023-05-14 22:31:39

CSV(Comma Separated Values,逗号分隔值)是一种表示表格数据的文件格式,通常用于将数据库中的表格数据导入到电子表格软件中,如Microsoft Excel、OpenOffice等。在java程序中,我们可以使用Apache Commons CSV库来实现CSV文件的导入和导出功能。

1.导入CSV文件

导入CSV文件通常涉及以下几个步骤:

(1)创建CSVParser对象:使用CSVParser类解析CSV文件。

(2)读取CSV文件:读取CSV文件中的数据行(包括表头和数据行)。

(3)处理CSV文件数据:对CSV文件中的数据行进行处理,将每一行数据转换为Java对象。

(4)关闭CSV文件:使用CSVParser对象的close()方法关闭CSV文件。

代码示例:

public static List<User> importCSV(String filePath) throws Exception {
    List<User> userList = new ArrayList<>();

    // 1. 创建CSVParser对象
    CSVParser csvParser = CSVParser.parse(new File(filePath), Charset.forName("UTF-8"), CSVFormat.DEFAULT);

    // 2. 读取CSV文件
    List<CSVRecord> records = csvParser.getRecords();

    // 3. 处理CSV文件数据
    for (int i = 1; i < records.size(); i++) {
        CSVRecord record = records.get(i);
        String name = record.get(0);
        String age = record.get(1);
        String sex = record.get(2);
        User user = new User(name, Integer.parseInt(age), sex);
        userList.add(user);
    }

    // 4. 关闭CSV文件
    csvParser.close();

    return userList;
}

2.导出CSV文件

导出CSV文件通常涉及以下几个步骤:

(1)创建CSVPrinter对象:使用CSVPrinter类将数据输出到CSV文件。

(2)写入CSV文件表头:使用CSVPrinter对象的printRecord()方法写入CSV文件的表头。

(3)写入CSV文件数据:使用CSVPrinter对象的printRecord()方法写入CSV文件中的数据行。

(4)关闭CSV文件:使用CSVPrinter对象的close()方法关闭CSV文件。

代码示例:

public static void exportCSV(List<User> userList, String filePath) throws Exception {
    // 1. 创建CSVPrinter对象
    CSVPrinter csvPrinter = new CSVPrinter(new FileWriter(filePath), CSVFormat.DEFAULT);

    // 2. 写入CSV文件表头
    csvPrinter.printRecord("姓名", "年龄", "性别");

    // 3. 写入CSV文件数据
    for (User user : userList) {
        List<String> record = new ArrayList<>();
        record.add(user.getName());
        record.add(String.valueOf(user.getAge()));
        record.add(user.getSex());
        csvPrinter.printRecord(record);
    }

    // 4. 关闭CSV文件
    csvPrinter.close();
}

注意事项:

在使用Apache Commons CSV库时,需要引入以下依赖:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-csv</artifactId>
    <version>1.7</version>
</dependency>

另外,在导入CSV文件时,需要注意CSV文件的编码格式,通常使用UTF-8编码。在导出CSV文件时,需要注意CSV文件中的数据行,每行数据需要用逗号分隔,且字符串数据需要用双引号括起来。如果CSV文件中的数据行有换行符,需要将该数据用双引号括起来,且在双引号内部的换行符需要用两个双引号代替。如下所示:

"数据1","数据2"
"数据3","数据4
数据5","数据6"
"数据7","数据8""数据9"""

以上是java如何实现CSV文件导入与导出功能的一些简单介绍。使用Apache Commons CSV库可以方便地实现CSV文件的导入和导出功能,同时需要注意CSV文件的编码格式和数据行格式。