首页app软件java读取csv文件某一列 java poi读取csv

java读取csv文件某一列 java poi读取csv

圆圆2025-07-16 19:00:21次浏览条评论

在java中读取csv文件主要有两种方式:使用第三方库或手动解析。1.使用apache commons csv库时,需添加依赖,创建csvparser对象指定并文件路径和格式,通过csvrecord访问数据;2.使用opencsv库时,添加依赖后通过csvreader读取所有行,每行以string存储形式存储;3.手动解析可通过bufferedr eader逐行读取并以字段字段,但需自行处理关注和转义字符;4.处理大型csv文件时,可使用缓冲流、逐行处理、多线程或内存映射文件优化性能;5.处理不同编码的csv文件时,需通过inputstreamreader指定正确的字符编码乱码。

如何使用Java读取CSV文件 Java CSV文件读取示例

读取CSV文件在Java中很常见,核心占用解析分隔分隔的数据。选择合适的库或者手动解析,都是可行的方案。

解决方案

读取CSV文件主要有两种方式:一是使用Java自带的类库手动解析,二是使用第三方库,比如Apache Commons CSV或OpenCSV。前面灵活高,但需要自己处理各种边界情况;夜间使用简单,但可能牺牲一些灵活。

立即学习“Java免费学习笔记(深入)”;

使用Apache Commons CSV

Apache Commons CSV是一个流行的库,可以地读取和写入CSV文件。

添加依赖:

在Maven项目中,添加以下依赖:lt;dependencygt; lt;groupIdgt;org.apache.commonslt;/groupIdgt; lt;artifactIdgt;commons-csvlt;/artifactIdgt; lt;versiongt;1.9.0lt;/versiongt;lt;/dependencygt;登录后复制

如果使用Gradle,添加:implementation 'org.apache.commons:commons-csv:1.9.0'登录后复制

读取CSV文件:import org.apache.commons.csv.*;import java.io.*;import java.nio.file.Files;import java.nio.file.Paths;public class CSVReaderExample { public static void main(String[] args) throws IOException { String filePath = quot;data.csvquot;; // 替换为你的 CSV 文件路径 try ( Reader reader = Files.newBufferedReader(Paths.get(filePath)); CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT .withHeader(quot;IDquot;, quot;Namequot;, quot;Agequot;, quot;Cityquot;) .withIgnoreHeaderCase() .withTrim()); ) { for (CSVRecord csvRecord : csvParser) { // 访问列 String id = csvRecord.get(quot;IDquot;); String name = csvRecord.get(quot;Namequot;); String age = csvRecord.get(quot;Agequot;); String city = csvRecord.get(quot;Cityquot;); System.out.println(quot;Record No - quot; csvRecord.getRecordNumber()); System.out.println(quot;---------------quot;); System.ou

t.println(quot;ID : quot;id); System.out.println(quot;姓名: quot;姓名); System.out.println(quot;年龄: quot;年龄); System.out.println(quot;城市: quot;城市); System.out.println(quot;----------------quot;); } } }}登录后复制代码

代码首先创建了一个CSVParser对象,指定了CSV文件的路径和格式。withHeader定义了CSV文件的表头,withIgnoreHeaderCase忽略表头大小写,withTrim查看字段周围的空格。然后,遍历CSVRecord对象,可以像访问Map一样访问每一列的数据。

使用OpenCSV

OpenCSV是另一个流行的CSV处理库,提供了更灵活的配置选项。

添加依赖:

在Maven项目中,添加以下依赖:lt;dependencygt;lt;groupIdgt;com.opencsvlt;/groupIdgt;lt;artifactIdgt;opencsvlt;/artifactIdgt;lt;versiongt;5.7.1lt;/versiongt;lt;/dependencygt;登录后复制

如果使用Gradle,添加:implementation 'com.opencsv:opencsv:5.7.1'登录后复制

读取CSV文件:import com.opencsv.*;import java.io.*;import java.nio.file.Files;import java.nio.file.Paths;import java.util.List;public class OpenCSVReaderExample { public static void main(String[] args) throws Exception { String filePath = quot;data.csvquot;; // 替换为你的CSV文件路径 try ( Reader reader = Files.newBufferedReader(Paths.get(filePath)); CSVReader csvReader = new CSVReader(reader); ) { Listlt;String[]gt;records = csvReader.readAll(); for (String[] record :records) { System.out.println(quot;Record: quot; String.join(quot;,quot;, record)); } } }}登录后复制

OpenCSV更简单,直接读取所有行,每行都是一个字符串数组。如果需要更复杂的处理,可以使用CSVReaderBuilder来配置分隔符、引号等。

手动解析CSV文件

如果不想使用第三方库,也可以手动解析CSV文件。

导入 java.io.*;导入 java.nio.file.Files;导入 java.nio.file.Paths;public class ManualCSVReader { public static void main(String[] args) throws IOException { String filePath = quot;data.csvquot;; // 替换为你的 CSV 文件路径 try (BufferedReader br = new BufferedReader(new FileReader(filePath))) { String line; while ((line = br.readLine()) != null) { String[] values = line.split(quot;,quot;); System.out.println(quot;Line: quot; line); for (int i = 0; i lt; values.length; i ) { System.out.println(quot;Value [quot; i quot;]: quot; values[i]); } } } }}登录后复制这种方式最简单,但需要自己处理引号、转义字符等复杂情况。

如何处理CSV文件中的引号和转义字符?

在CSV文件中,注释通常包含包含引号的字段。如果字段本身包含引号,则通常使用两个引号来转义。手动解析时,需要特别注意这些情况。使用库时,库通常会自动处理这些情况,但需要库的配置选项。例如,Apache Commons CSV的CSVFormat可以配置引号字符和转义字符。

读取大型CSV文件时如何优化性能?

读取大型CSV文件时,性能是一个关键问题。可以考虑以下优化措施:使用缓冲流:BufferedReader可以提高读取效率。逐行处理:避免一次性将整个文件加载到内存中。多线程处理:将文件分割成多个部分,使用多线程处理。但这会增加代码的复杂性。使用大量映射文件: 对于非常大的文件,使用内存映射文件来提高读取速度。

如何处理不同编码的CSV文件?

CSV文件可以使用不同的字符编码,例如UTF-8、GBK等。在读取CSV文件时,需要指定正确的字符编码,否则可能会出现乱码。可以使用InputStreamReader来指定字符编码。

try ( InputStreamReader reader = new InputStreamReader(new FileInputStream(filePath), quot;UTF-8quot;); BufferedReader br = new BufferedReader(reader)) { // ...}登录后复制

将“UTF-8”替换为实际的字符编码。

以上就是如何使用Java读取CSV文件 Java CSV文件读取读取的详细信息,更多请关注乐哥常识网其他相关文章!

如何使用Java读取
利用vscode写代码如何看效果 vscode统计代码行数的方法
相关内容
发表评论

游客 回复需填写必要信息