如何解决Selenium+Java读取.xls文件时出现的OLE2异常


大家好,我是Omkaar,一名自动化测试工程师(Selenium+Java方向)。
我遇到了自动化读取.xls格式(Microsoft Excel 97-2003工作表)Excel文件的场景,目前无法读取该文件:手动打开会弹出错误窗口(见上图),使用自动化代码读取时触发OLE2异常。
我读取Excel文件的步骤如下:
- 创建File类对象,指定目标文件路径。
- 创建Workbook实例。
- 创建Sheet、Row和Cell实例。
- 使用for循环遍历单元格获取数据(代码如下)。
我的代码
public class WorkWithXLSFile extends BaseTest { public static void main(String[] args) { try { File file = new File("C:\\Users\\Omkar Shrotri\\Downloads\\Ticketdetails.xls"); if (file.exists()) { FileInputStream fis = new FileInputStream(file); HSSFWorkbook wb = new HSSFWorkbook(fis); HSSFSheet sheet1 = wb.getSheetAt(0); DataFormatter formatter11 = new DataFormatter(); for (int i = 0; i <= 7; i++) { String excel_data = formatter11.formatCellValue(sheet1.getRow(2).getCell(i)); // int s = i+1; String web_data = driver.findElement(By.xpath("//table/tbody/tr[1]/td['" + i + "']")).getText(); if (excel_data.equals(web_data)) { System.out.println("Passed"); } } } } catch (Exception NotOLE2FileException) { System.out.print(NotOLE2FileException); // handle popup // try code } } }
问题分析与解决办法
修复或转换异常文件
手动打开报错说明文件本身不符合标准.xls的OLE2格式,可能是后缀错误或文件损坏:- 用Excel自带修复功能:打开Excel后,通过「文件-打开-浏览」选中该文件,点击打开按钮旁的下拉箭头选择「打开并修复」。
- 修复成功后,将文件另存为标准的.xls或.xlsx格式,再用代码读取。
优化代码兼容性
改用WorkbookFactory自动识别Excel格式,替代固定的HSSFWorkbook,兼容.xls和.xlsx:// 替换原HSSFWorkbook创建代码 Workbook wb = WorkbookFactory.create(fis); Sheet sheet1 = wb.getSheetAt(0);需确保项目中poi和poi-ooxml依赖版本一致,避免版本冲突。
精准异常处理
替换泛用的Exception捕获,明确针对目标异常处理,提升排查效率:} catch (NotOLE2FileException e) { System.err.println("非标准OLE2格式文件:" + e.getMessage()); // 可在此添加格式转换逻辑 } catch (IOException e) { System.err.println("文件读取IO异常:" + e.getMessage()); }
内容的提问来源于stack exchange,提问作者Omkar Shrotri
相关产品推荐
相关产品推荐

