java - 使用 POI 获取具有特定列名的每一行中的值
问题描述
我想读取 .xlsx 文件以获取具有特定列名的每一行中的值并将它们保存到字符串数组中。
Sample data from file.xlsx
A B C
A123 B123 C123
A456 B456 C456
A789 B789 C789
A999
This is the code that try to get values from column A, but it's not get the correct result.
InputStream is = file.getInputstream();
int rowTotal = 0;
XSSFWorkbook wb = new XSSFWorkbook(is);
XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row = sheet.getRow(0);
rowTotal = sheet.getLastRowNum();
if((rowTotal > 0) || (sheet.getPhysicalNumberOfRows() > 0)) {
rowTotal++;
log.debug("rowTotal : "+rowTotal);
int colNum = -1;
for(int i = 0; i <= rowTotal; i++) {
if(row.getCell(i).getStringCellValue().trim().equals("A"))
colNum = i;
row = sheet.getRow(i+1);
XSSFCell cellA = row.getCell(colNum);
DataFormatter formatter = new DataFormatter();
String valueA = formatter.formatCellValue(cellA);
log.debug("Data from col A : "+valueA);
}
}
}
The result from log are..
rowTotal : 5
Data from col A : A123
Data from col A : A456
Data from col A : A789
Why it's not print "A999" ?
解决方案
推荐阅读
- javascript - 如何格式化 div 使其与 Word 的注释格式类似
- sql - 类似查询中的查询规划器差异
- javascript - javascript代码,创建一个根据数字是否为偶数返回布尔值的函数?
- r - 在 R-studio 中,我想知道如何在不删除前一个循环结果的情况下保存循环结果
- c - 将信息放入列表中。C
- javascript - luxon中数字日期偏移的困难
- laravel - 为什么 Laravel 8.x / Jetstream 电子邮件验证不起作用?
- typescript - 有像 as3 这样的打字稿字典吗?
- c# - 如何在 C# 中将新数组作为参数传递
- c# - 如何使用使用 C# .NET Core REST API 中的库的客户端重命名 JsonPropertyName