gpt4 book ai didi

java - 读取单列中包含多个值的 Excel 文件 - Java

转载 作者:行者123 更新时间:2023-11-30 07:24:03 26 4
gpt4 key购买 nike

我正在使用 Apache POI 读取 Excel 文件。我的Excel表格结构是这样的

|2000s| 2001, 2003, 2008, 2009|

因此对于右侧数据,我要求将其分配给 2000s

到目前为止我已经实现了这种方式:

List<Class> list = new ArrayList<Class>();
File file = new File(file_path);
FileInputStream fis = new FileInputStream(file);

//Create an instance of workbook which refers to an excel file
XSSFWorkbook wb = new XSSFWorkbook(fis);

//This selects the 1st sheet
XSSFSheet sheet = wb.getSheetAt(0);

//Iterate through each row one by one
Iterator<Row> itr = sheet.iterator();
String newName = null;
String oldName = null;


while(itr.hasNext()){
Row nextRow = itr.next();
// For each row, iterate through all the columns
Iterator<Cell> cellIterator = nextRow.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();

newName = nextRow.getCell(0).toString();

if(nextRow.getCell(1).toString().contains(",")){
StringTokenizer st = new StringTokenizer(nextRow.getCell(1).toString(),",");
while(st.hasMoreTokens()){
oldName = st.nextToken();
}
}
else{
oldName = nextRow.getCell(1).toString();
}
}

System.out.println();
}

当我编译时,它在 nextRow.getCell(1) 行抛出“空指针异常”。

我不明白如何将所有逗号值映射到 2000 秒。

这对于普通数据(没有逗号)来说工作得非常好。

最佳答案

逗号值已处理

我发布答案,以便有人可以从这里获得帮助。

我所做的是添加了 String Tokenizer 类,如果单元格中有逗号,它会用逗号分隔符分隔值。

让我们看一下下面的代码

 while(itr.hasNext()){
Row nextRow = itr.next();
// For each row, iterate through all the columns
Iterator<Cell> cellIterator = nextRow.cellIterator();
while (cellIterator.hasNext())
{
Cell cell = cellIterator.next();

newName = nextRow.getCell(0).toString();

if(nextRow.getCell(1).toString().contains(",")){
StringTokenizer st = new StringTokenizer(nextRow.getCell(1).toString(),",");
while(st.hasMoreTokens()){
oldName = st.nextToken();
}
}
else{
oldName = nextRow.getCell(1).toString();
}
}
System.out.println();
}

这里newName获取第1列的值(2000s)oldName 获取基于“,”分隔符的标记 - 在本例中为 2001, 2003, 2008, 2009

对于 oldName 的所有这些值,将映射 newName 2000s。

更新:我收到'空指针异常'的原因是,因为第二列(nextRow.getCell(1))的某些单元格为空。

因此,每当迭代器到达空单元格时,它就会抛出空指针异常。您需要在此处分配缺失单元策略

Cell cell2 = row.getCell(j,org.apache.poi.ss.usermodel.Row.CREATE_NULL_AS_BLANK);

(它只是将 null 值视为空白)

这样,您还可以在读取 Null 值时解决 Excel 中的空指针异常

关于java - 读取单列中包含多个值的 Excel 文件 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37068032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com