我有 Excel 文件(*.xls
或 *.xlxs
),它可以有记录或没有记录。首先,我将文件存储在某个临时位置,然后复制文件的内容,然后尝试读取该文件。如果 Excel 工作表包含记录,但工作表没有记录且文件为空,则此方案效果很好。这种情况行不通。我正在使用 apache-poi 读取 excel 文件内容。
public static boolean isRowEmpty(Row row) {
for (int c = row.getFirstCellNum(); c < row.getLastCellNum(); c++) {
Cell cell = row.getCell(c);
if (cell != null && cell.getCellType() != Cell.CELL_TYPE_BLANK) {
return false;
}
}
return true;
}
我得到IOException:无法读取整个 header 0字节读取预期512字节
。有人可以建议我一种方法来消除此异常并检查 Excel 文件是否为空吗?
最佳答案
谷歌搜索和对org.apache.poi
库的一些实验表明,在不知道其中的数据结构的情况下检查xls
文件是否为空是不正常的它。例如,很难判断 Oracle BD
是否为空。
无论如何,您都可以获取工作表的数量,然后迭代所有工作表,检查行和单元格,如果没有发现任何内容,则认为文件为空。
HSSFWorkbook wBook = new HSSFWorkbook(new FileInputStream("your_path"));
for(int i = 0; i < wBook.getNumberOfSheets(); i++){
System.out.println("Sheet " + i + " has data: " + isSheetEmpty(wBook.getSheetAt(i)));
}
boolean isSheetEmpty(HSSFSheet sheet){
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
Iterator cells = row.cellIterator();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
if(!cell.getStringCellValue().isEmpty()){
return true;
}
}
}
return false;
}
关于java - 如何检查excel文件是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718868/