Java读取CSV文件数据写入Excel
在日常的数据处理工作中,我们经常会遇到需要将CSV文件中存储的数据转换为Excel格式的需求。Java作为一种强大的编程语言,提供了丰富的库和工具,以便于我们处理各种数据格式。本文将介绍如何使用Java读取CSV文件数据,并将其写入Excel文件中。
CSV文件简介
CSV(Comma-Separated Values)是一种常见的文件格式,用于存储和交换表格数据。它由纯文本组成,每行表示一条记录,每个字段之间使用逗号进行分隔。CSV文件具有以下特点:
- 纯文本格式,易于阅读和编辑。
- 可以使用逗号、分号或制表符进行字段分隔。
- 可以包含引号以包裹包含分隔符的字段值。
- 不支持复杂的数据类型、格式或公式。
CSV文件通常用于数据导出、数据备份和数据迁移等场景。在许多情况下,我们需要将CSV文件中的数据转换为Excel格式,以便于进一步的数据分析和处理。
读取CSV文件数据
Java提供了多种方法读取CSV文件的数据,包括使用原生Java IO、Apache Commons CSV等库。下面将以使用Apache Commons CSV库为例,演示如何读取CSV文件的数据。
首先,我们需要在项目中添加Apache Commons CSV库的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.8</version>
</dependency>
读取CSV文件的代码示例如下:
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
public class CSVReader {
public static void main(String[] args) {
try {
Reader reader = new FileReader("data.csv");
CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT);
for (CSVRecord csvRecord : csvParser) {
String name = csvRecord.get(0);
int age = Integer.parseInt(csvRecord.get(1));
String email = csvRecord.get(2);
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Email: " + email);
}
csvParser.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码使用CSVParser
类从CSV文件中解析数据,并逐行读取CSV记录。对于每一行记录,我们可以通过get()
方法获取相应字段的值。在这个例子中,我们假设CSV文件的第一列是姓名,第二列是年龄,第三列是电子邮件。
写入Excel文件
在读取CSV文件数据后,我们可以使用Java提供的Excel库来将数据写入Excel文件。在本文中,我们将使用Apache POI库来处理Excel文件。
首先,我们需要在项目中添加Apache POI库的依赖。在Maven项目中,可以在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
接下来,我们可以使用以下代码示例将CSV数据写入Excel文件:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelWriter {
public static void main(String[] args) {
try (Workbook workbook = new XSSFWorkbook()) {
Sheet sheet = workbook.createSheet("Data");
// 创建表头
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("Name");
headerRow.createCell(1).setCellValue("Age");
headerRow.createCell(2).setCellValue("Email");
// 写入数据
Row dataRow = sheet.createRow(1);
dataRow.createCell(0).setCellValue("John Doe");
dataRow.createCell(1).setCellValue(30);
dataRow.createCell(