Java FileIO处理Excel转TXT数据提取及CSV处理咨询
解决方案:Excel转TXT的分隔符选择与Java读取实现,及CSV处理建议
一、TXT文件的分隔符选择
因为supervisor name字段带空格,直接排除空格分隔符,推荐这几种稳妥选项:
- 制表符(\t):Excel导出时直接支持,日常数据里几乎不会出现制表符,完全不会和字段内的空格冲突,是首选
- 竖线(|):如果制表符存在意外冲突,竖线是次优选择,普通业务数据中出现概率极低
- 自定义特殊符号:比如
§、@#(先确认数据里没有这类符号),适合极端场景
二、Java读取TXT单元格的实现(基于Scanner)
既然已经能逐行读取,只需对每行按选定分隔符拆分即可,直接上代码:
示例代码(制表符分隔)
import java.io.File; import java.util.Scanner; public class TxtCellReader { public static void main(String[] args) throws Exception { File txtFile = new File("你的文件路径.txt"); Scanner scanner = new Scanner(txtFile); // 先读表头(如果有) if (scanner.hasNextLine()) { String[] headers = scanner.nextLine().split("\t"); // 按需处理表头,比如打印列名 } // 读取数据行拆分单元格 while (scanner.hasNextLine()) { String dataLine = scanner.nextLine(); String[] cells = dataLine.split("\t"); // cells数组就是每个单元格的内容,比如cells[1]就是supervisor name字段 System.out.println("主管姓名:" + cells[1]); } scanner.close(); } }
注意点
- 如果选竖线作为分隔符,
split时要转义:dataLine.split("\\|") - 要是数据里意外出现分隔符,导出TXT时记得给该字段加引号,这种情况别直接用
split,可以参考下文CSV的库来处理
三、CSV文件的处理建议
CSV标准格式会用双引号包裹带空格/逗号的字段,绝对别自己用split(",")处理,很容易因为引号、换行等边界情况出错,直接用成熟第三方库:
1. OpenCSV(轻量易用)
先加Maven依赖:
<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId> <version>5.6</version> </dependency>
读取示例:
import com.opencsv.CSVReader; import java.io.FileReader; public class CsvCellReader { public static void main(String[] args) throws Exception { CSVReader reader = new CSVReader(new FileReader("你的文件.csv")); String[] line; // 读表头 line = reader.readNext(); // 读数据行 while ((line = reader.readNext()) != null) { String supervisorName = line[1]; System.out.println("主管姓名:" + supervisorName); } reader.close(); } }
2. Apache Commons CSV(功能更全)
Maven依赖:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-csv</artifactId> <version>1.10.0</version> </dependency>
读取示例(支持按表头名取数据,更直观):
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.Reader; public class CommonsCsvReader { public static void main(String[] args) throws Exception { Reader reader = new FileReader("你的文件.csv"); // 自动识别表头,后续可以用表头名取数据 CSVParser parser = CSVFormat.DEFAULT.withHeader().parse(reader); for (CSVRecord record : parser) { String supervisorName = record.get("Supervisor Name"); System.out.println("主管姓名:" + supervisorName); } parser.close(); reader.close(); } }
内容的提问来源于stack exchange,提问作者T.J
相关产品推荐
相关产品推荐

