poi空单元格格式_如何使用Apache POI读取空的,但是格式化的Excel单元格?

我有一个使用Apache POI读取Excel单元格的方法,它工作正常 . 嗯......几乎没问题 .

public static ArrayList readXLsXFile() throws FileNotFoundException, IOException {

ArrayList outListaExcel = new ArrayList();

FileInputStream fis;

ptxf= new FileInputStream(pathToExcelFile);

XSSFWorkbook workbook = new XSSFWorkbook(ptxf);

XSSFSheet sheetAr = workbook.getSheetAt(0);

Iterator rowsAr = sheetAr.rowIterator();

while (rowsAr.hasNext()) {

XSSFRow row1 = (XSSFRow) rowsAr.next();

Iterator cellsAr = row1.cellIterator();

ArrayList arr;

arr = new ArrayList();

while (cellsAr.hasNext()) {

XSSFCell cell1 = (XSSFCell) cellsAr.next();

arr.add(String.valueOf(cell1));

}

outListaExcel.add(arr);

}

return outListaExcel;

}

如果格式化单元格,例如,如果整个A列具有边框,那么它将继续读取空单元格,从而为我提供空字符串 . 如何忽略那些空(格式化)细胞?

所以 readXLsXFile 会给我一个 ArryList

[0] -> [1][2]

[1] -> [3][4]

但是它还会给十个节点添加空字符串,因为coloumn A是用边框格式化的 .

rqyVg.jpg

edit 之后 Gagravarr 回答 .

我可以避免检查是否为 subList 为空,然后不将其添加到 mainList . 但是对于一些非常大的.xls文件,如果有很多这样的文件需要很长时间,而且我认为这不是一个好习惯 .

我的问题是,如果有 rows 的东西,就像我忽略了 cells 那样 .

ArrayList>mainLista = new ArrayList>();

for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {

Row r = sheet.getRow(rowNum);

int lastColumn = r.getLastCellNum();

ArrayList subList = new ArrayList();

for (int cn = 0; cn < lastColumn; cn++) {

Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);

if (c != null) {

subList.add(c.getStringCellValue());

} else {

}

}

if (!subList.isEmpty() ){ // I think it is not good way

mainLista.add(subList);} // to do this, because it still reads

} // an empty rows

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值