我是Apache POI的新手,但我想做的是通过Excel文件(.xls)读取并将其放入ArrayList进行存储,以便稍后进行操作 . 我可以得到整张纸,但我的问题就在于:我得到整张纸(约54183行) .
我想跳过空白的单元格,它是类型3.由于某种原因,当我在system.out.print中找到ArrayList时,它有所有空白单元格 .
有没有办法跳过那些,而不是将它们添加到我正在尝试创建的ArrayList?
我有以下一点代码:
public ArrayList readExcelFile(String filePath) throws IOException {
ArrayList cellVectorHolder = new ArrayList();
try {
FileInputStream inputFile = new FileInputStream(filePath);
POIFSFileSystem myFileSystem = new POIFSFileSystem(inputFile);
HSSFWorkbook wkbk = new HSSFWorkbook(myFileSystem);
wb = wkbk;
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
HSSFSheet wkSheet = wkbk.getSheetAt(i);
for (Row row : wkSheet) {
ArrayList cellVector = new ArrayList();
for (Cell cell : row) {
if(cell.getCellType() != 3){
cellVector.add(cell);
}
}
cellVectorHolder.add(cellVector);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return cellVectorHolder;
}
不要介意ArrayList的名字......我一直在使用Vectors,直到我终于发现它们自1.2以后就被折旧了 .
3 回答
在将单元格添加到List之前,您可以检查单元格值 . 就像是:
如果有某些内容,您只需添加单元格 .
我认为你应该迭代行和单元格,这样POI甚至不会给你空单元格 .
检查
HSSFSheet.iterator()
,它遍历工作表中的所有行 . 然后Row.cellIterator()
迭代该行中的Cells .而且你已经基本完成了 .
如果您打算保留旧的结果变量,则两个内部循环变为:
试试这个