在我的系统中,我有一个 Excel 阅读器,它也可以读取 csv 文件。
这是我读取 csv 文件的方式:
Path path = Paths.get(this.getFilePath());
CSVParser parser = new CSVParserBuilder().withSeparator(';').build();
try(BufferedReader br = Files.newBufferedReader(path, StandardCharsets.UTF_8);
CSVReader reader = new CSVReaderBuilder(br).withCSVParser(parser).build()) {
rows = reader.readAll();
这行得通。来自 csv 文件的数据存储在字符串数组列表中。
现在,当我从列表中读取数据时,我注意到了一些我不理解的东西。
这是我从列表中读取数据的方式:
if (rows != null && rows.size() > 1) {
for (String[] row : rows) {
int i = Integer.parseInt(row[0]);
String name = row[1];
double d = Double.parseDouble(row[2].replace(",", "."));
}
}
如果从列表中取出第一个数组,并且将数组中的第一个字符串从 String 解析为 int,则抛出java.lang.NumberFormatException: For input string: "27" 。
但是如果第一个数组(第一个 excel 行)被跳过:
if (rows != null && rows.size() > 1) {
for (int i = 1; i < rows.size(); i++) { //i = 1, skipp first array(excel line)
String[] row = rows.get(i);
int i = Integer.parseInt(row[0]);
String name = row[1];
double d = Double.parseDouble(row[2].replace(",", "."));
}
}
这种方式没有 java.lang.NumberFormatException: For input string: 被抛出。
如果不跳过第一个数组(excel 行),我不明白为什么会抛出 java.lang.NumberFormatException。
excel 文件的第一行是必需的,不应跳过。它可以与读取excel文件有关吗?与我使用的阅读器?
有谁知道这个问题或有人可以帮助我吗?