1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > poi空单元格格式_如何使用Apache POI读取空的 但是格式化的Excel单元格?

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

时间:2021-04-09 12:56:07

相关推荐

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是用边框格式化的 .

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。