java - 如何检查excel文件是否为空?

标签 java excel

我有 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/

相关文章:

Excel – 从工作表中的链接图像中提取路径信息

java - 将 GET 参数添加到 Play Framework 2.2 响应

java - 什么都没有输入时,如何在edittext中将默认值设置为0?

Excel增加公式内单元格的行数

excel - "Run-time error ' 1004 ' Cannot edit a macro on a hidden workbook. Unhide the workbook using the Unhide command"在功能区 XML 中使用 "onLoad"时

excel - 如何将包含公式的文本部分加粗?

java - 线程仅在第二次运行时工作

java - 如何为可绘制的线条形状制作圆角破折号或圆点

java - 我可以使用 Java Socket 在动态 IP 上托管聊天服务器吗?

swift - 在 Swift 应用程序中从 Excel 文档中读取数据