
CSV(逗号分隔值)因其结构简单、可读性强以及跨平台兼容性广等特点备受欢迎,至今仍是数据交换的通用格式。如果你正在寻找一种稳健且高效的 Java 读取 CSV 方案,Spire.XLS for Java 库提供了一个功能强大且操作简单的解决方法。
本指南将介绍如何利用 Java 加载和读取 CSV 文件,并将其转换为结构化的 DataTable,从而在应用程序中实现无损的数据处理与分析。
- 为什么选择 Spire.XLS for Java 来解析 CSV 文件
- 实战演练:如何使用 Java 读取 CSV 文件
- 进阶技巧:在 Java 中将 CSV 读取为 DataTable
- 常见问题解答 (FAQ)
- 总结
为什么选择 Spire.XLS for Java 来解析 CSV 文件?
与其他 Java CSV 解析库相比,Spire.XLS 在处理 CSV 数据时具有以下显著优势:
- 极简的 API 设计: 提供了更直观的接口,简化了读取 CSV 文件的代码逻辑。
- 支持自定义分隔符: 分隔符不局限于逗号,可灵活处理各类特殊字符分隔的文本文件。
- 智能边界检测: 能够自动识别有效数据区域,避免读取到冗余的空行或空列。
- 原生支持 DataTable 转换: 无需手动解析,即可直接将 CSV 数据精准转换为结构化的 DataTable 对象。
- 多格式兼容性: 用户可以自由在 CSV、XLS 和 XLSX 格式之间转换。
实战演练:如何使用 Java 读取 CSV 文件
Spire.XLS for Java 提供了 Workbook 类用于加载 CSV 文件,并配合 Worksheet 类来访问具体数据。以下是自动识别分隔符并逐行读取 CSV 文件的具体步骤:
1. 环境配置与依赖管理
首先,确保你的项目中已引入 Spire.XLS for Java。如果你使用 Maven 进行构建,只需在 pom.xml 文件中添加以下依赖配置:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>16.1.3</version>
</dependency>
</dependencies>
2. 加载 CSV 文件
在 Spire.XLS for Java 中,你可以将 CSV 文件直接加载到 Workbook 对象中。加载完成后,CSV 中的每一行数据都会自动映射为工作表中的对应行。
import com.spire.xls.*;
public class ReadCSV {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载 CSV 文件
workbook.loadFromFile("sample.csv", ",", 1, 1);
}
}
方法参数详解:
loadFromFile() 方法支持传入四个关键参数,以便精确控制文件的加载方式:
- "sample.csv":指定要读取的 CSV 文件所在路径。
- ",":你可以根据文件格式指定分隔符(例如逗号 “, ” 分号 “;” 或制表符 “\t”)。
- 1:指定从文件的哪一行开始加载数据。
- 1:指定从文件的哪一列开始加载数据。
3. 访问工作表并读取 CSV 数据
在 Spire.XLS 中,CSV 文件被视为仅包含单个工作表的工作簿。因此,我们只需获取第一个工作表,然后通过嵌套循环遍历其行和列即可提取数据:
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 获取已使用的单元格区域
CellRange dataRange = sheet.getAllocatedRange();
// 遍历行
for (int i = 0; i < dataRange.getRowCount(); i++) {
// 遍历列
for (int j = 0; j < dataRange.getColumnCount(); j++) {
// Get cell text
CellRange cell = dataRange.get(i+1,j+1);
System.out.print(cell.getText() + "\t");
}
System.out.println();
输出结果: 程序将从 CSV 文件中读取数据,并在控制台中以制表符分隔的形式打印出来,确保内容排列整齐、易于阅读。

进阶技巧:在 Java 中将 CSV 读取为 DataTable
对于需要进行结构化数据操作的场景,将 CSV 转换为 DataTable 则更加实用。DataTable 以行列形式组织数据,便于用户进行数据查询、过滤或与数据库集成。
下方 Java 代码展示了怎样将 CSV 文件读取并导出为 DataTable:
import com.spire.xls.*;
import com.spire.xls.data.table.DataTable;
public class CSVtoDataTable {
public static void main(String[] args) {
// 创建工作簿并加载 CSV 文件
Workbook workbook = new Workbook();
workbook.loadFromFile("sample.csv", ",", 1, 1);
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 导出数据到 DataTable
DataTable dataTable = sheet.exportDataTable();
// 获取行数和列数
System.out.println("总列数: " + dataTable.getColumns().size());
System.out.println("总行数: " + dataTable.getRows().size());
System.out.println();
// 打印列名
for (int i = 0; i < dataTable.getColumns().size(); i++) {
System.out.print(dataTable.getColumns().get(i).getColumnName() + " | ");
}
System.out.println();
System.out.println("----------------------------------------------------------");
// 打印各行数据
for (int i = 0; i < dataTable.getRows().size(); i++) {
for (int j = 0; j < dataTable.getColumns().size(); j++) {
System.out.print(dataTable.getRows().get(i).getString(j) + "\t");
}
System.out.println();
}
}
}
核心要点解析:
- exportDataTable() 方法:直接将 CSV 数据转换为 DataTable 对象,无需进行繁琐的手动操作。
- DataTable 的优势:能够轻松获取各类基础数据信息,例如总列数、总行数、列名以及具体的行数据内容等。
输出结果:

推荐阅读:使用 Java 将 CSV 转换为 PDF(含格式设置)
常见问题解答 (FAQ)
1. 如何处理使用不同分隔符(如分号、制表符等)的 CSV 文件?
只需在 loadFromFile() 方法中指定所需的分隔符即可,例如:
// 处理以分号分隔的文件
workbook.loadFromFile("sample.csv", ";", 0, 0);
// 处理以制表符分隔的文件
workbook.loadFromFile("sample.csv", "\t", 0, 0);
// 处理以竖线分隔的文件
workbook.loadFromFile("sample.csv", "|", 0, 0);
2. 如何跳过 CSV 文件中的表头行?
你可以通过从第二行(或任意指定行)开始遍历来跳过表头。例如,一个 CSV 文件包含 2 行表头(第 1 行和第 2 行),且实际数据从第 3 行开始,可以参考下方代码行进行设置:
// 从第三行开始读取
for (int i = 2; i < dataRange.getRowCount(); i++) {
for (int j = 0; j < dataRange.getColumnCount(); j++) {
// 将基于 0 的索引转换为 Spire.XLS 基于 1 的单元格索引。
CellRange cell = dataRange.get(i + 1, j + 1);
System.out.print(cell.getText() + "\t");
3. 我可以将 CSV 的特定范围导出为 DataTable 吗?
可以。Spire.XLS 支持通过 exportDataTable(CellRange range, boolean exportColumnNames) 方法定义精确的单元格范围,并将其导出为 DataTable。
总结
Spire.XLS for Java 极大地简化了 Java 中的 CSV 文件读取流程,是手动解析或基础第三方库的高效替代方案。无论是读取简单的 CSV 数据,还是将其转换为结构化的 DataTable,本指南提供的实战示例都能帮助你快速实现高效的 CSV 文件解析。
如需探索更多高级功能(如将数据导出为 PDF 等),请查阅 Spire.XLS for Java 官方教程。







