我试图从excel文件中读取值,以将XSSFWorkbook中的每一行和所有单元格存储在一个对象中并将其添加到arraylist。但是它仅在arraylist中添加了最后一个元素。在下面包括我的代码。
try
{
ArrayList<OrderInfo> orderList = new ArrayList<OrderInfo>();
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream("C:/mytemp/Order Details.xlsx"));
for (Sheet sheet : wb ) {
OrderInfo order_Info = new OrderInfo();
for (Row row : sheet) {
int rowId = row.getRowNum();
if(rowId != 0){
Cell del_zone = row.getCell(0);
order_Info.setDel_zone(del_zone.getStringCellValue());
Cell cust_id = row.getCell(1);
order_Info.setCustomer_id(cust_id.getStringCellValue());
}
}
orderList.add(order_Info);
}
for(int i = 0;i<orderList.size();i++){
logger.info("*******Print List Object******"+orderList.get(i).getDel_zone()+"****Cust_Id****"+orderList.get(i).getCustomer_id());
}
}
catch (Exception e)
{
System.err.println("Exception :" + e.getMessage());
}
最佳答案
orderList.add(order_Info)
应该在for (Row row : sheet)
循环内,而在外面
还需要在循环内创建它:OrderInfo order_Info = new OrderInfo();
应该稍后
for (Sheet sheet : wb ) {
for (Row row : sheet) {
int rowId = row.getRowNum();
if(rowId != 0){
Cell del_zone = row.getCell(0);
OrderInfo order_Info = new OrderInfo();
order_Info.setDel_zone(del_zone.getStringCellValue());
Cell cust_id = row.getCell(1);
order_Info.setCustomer_id(cust_id.getStringCellValue());
orderList.add(order_Info);
}
}
}