Java中使用POI导出CSV文件

1. 流程图

flowchart TD
    A[准备数据] --> B[创建CSV文件]
    B --> C[写入数据]
    C --> D[保存文件]
    D --> E[关闭文件]

2. 步骤和代码示例

步骤1: 准备数据

在开始导出CSV文件之前,我们需要准备要导出的数据。假设我们有一个包含学生信息的列表,每个学生的信息包括姓名、年龄和成绩。

import java.util.ArrayList;
import java.util.List;

public class Student {
    private String name;
    private int age;
    private float score;

    // 构造函数和getter/setter方法省略

    public static List<Student> getStudents() {
        List<Student> students = new ArrayList<>();
        students.add(new Student("Alice", 18, 90.5f));
        students.add(new Student("Bob", 20, 85.0f));
        students.add(new Student("Charlie", 19, 95.5f));
        return students;
    }
}

步骤2: 创建CSV文件

在导出CSV文件之前,我们需要创建一个文件,并使用CSV格式来保存数据。我们可以使用FileWriter来创建文件。

import java.io.FileWriter;
import java.io.IOException;

public class CsvExporter {
    private static final String CSV_FILE_PATH = "students.csv";

    public static void createCsvFile() throws IOException {
        FileWriter csvWriter = new FileWriter(CSV_FILE_PATH);

        // 写入CSV文件头部
        csvWriter.append("姓名,年龄,成绩\n");

        csvWriter.flush();
        csvWriter.close();
    }
}

步骤3: 写入数据

在CSV文件中,我们需要将每个学生的信息写入一行。我们可以使用FileWriter来实现这一点。

import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class CsvExporter {
    // ...

    public static void writeData(List<Student> students) throws IOException {
        FileWriter csvWriter = new FileWriter(CSV_FILE_PATH, true); // 追加模式

        // 写入每个学生的信息
        for (Student student : students) {
            csvWriter.append(student.getName())
                    .append(",")
                    .append(String.valueOf(student.getAge()))
                    .append(",")
                    .append(String.valueOf(student.getScore()))
                    .append("\n");
        }

        csvWriter.flush();
        csvWriter.close();
    }
}

步骤4: 保存文件

最后,我们需要保存并关闭CSV文件。

import java.io.FileWriter;
import java.io.IOException;

public class CsvExporter {
    // ...

    public static void saveFile() {
        System.out.println("CSV文件已保存为:" + CSV_FILE_PATH);
    }

    public static void main(String[] args) throws IOException {
        createCsvFile();
        writeData(Student.getStudents());
        saveFile();
    }
}

3. 完整代码

下面是完整的CsvExporter类的代码示例。

import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class CsvExporter {
    private static final String CSV_FILE_PATH = "students.csv";

    public static void createCsvFile() throws IOException {
        FileWriter csvWriter = new FileWriter(CSV_FILE_PATH);

        // 写入CSV文件头部
        csvWriter.append("姓名,年龄,成绩\n");

        csvWriter.flush();
        csvWriter.close();
    }

    public static void writeData(List<Student> students) throws IOException {
        FileWriter csvWriter = new FileWriter(CSV_FILE_PATH, true); // 追加模式

        // 写入每个学生的信息
        for (Student student : students) {
            csvWriter.append(student.getName())
                    .append(",")
                    .append(String.valueOf(student.getAge()))
                    .append(",")
                    .append(String.valueOf(student.getScore()))
                    .append("\n");
        }

        csvWriter.flush();
        csvWriter.close();
    }

    public static void saveFile() {
        System.out.println("CSV文件已保存为:" + CSV_FILE_PATH);
    }

    public static void main(String[] args) throws IOException {
        createCsvFile();
        writeData(Student.getStudents());
        saveFile();
    }
}

现在,你已经学会了如何使用POI在Java中导出CSV文件。这个步骤简单明了,可以帮助你在实际开发中处理和导出CSV数据。