【问题标题】:Unable to read excel file using POI and Java for Selenium无法使用 POI 和 Java for Selenium 读取 excel 文件
【发布时间】:2017-05-09 05:47:02
【问题描述】:

我的脚本是检查两个 excel 文件(xlsx 以不同的时间间隔从 Web 应用程序导出,例如更新前和更新后),其中包含相同数量的选项卡和多列。一切都是一样的,但我必须比较值。我已经完成了 4 组,但在第 5 组中挣扎。无法读取文件。检查 1) 尺寸 2) 减少纸张 3) 删除了一些数据但没有用。有时它在调试 1:10 时正在读取,但在运行时它显示 Null 指针异常。

 try {
        // Open the Excel file
        String FileNameforScriptsFilePath = "D:\\Functional Automation   
Data\\Pest WTO with change before.xlsx";
        FileInputStream FileNameforScriptsFile = new 
FileInputStream(FileNameforScriptsFilePath);

        XSSFWorkbook DataCleanBefore = new 
XSSFWorkbook(FileNameforScriptsFile);

//      File DataCleaningBeforeFile=new File("D:\\Functional Automation 
Data\\Pest RTO with change before.xlsx");//all are similar names
//      OPCPackage PestWTOwithchangebeforepkg = 
OPCPackage.open(DataCleaningBeforeFile.getAbsolutePath());
//      XSSFWorkbook DataCleanBefore = new   
XSSFWorkbook(PestWTOwithchangebeforepkg);

XSSFSheet BasicAddressDetailsBeforeSheet = 
DataCleanBefore.getSheet("Basic Address Details");

我也尝试过使用 SXSSFSheet,以及上面在 // OPC 中给出的。请帮助,自 4 天以来一直在苦苦挣扎。

【问题讨论】:

  • 您好,当您的任何变量被声明但未初始化时,我们会得到空指针。交叉检查所有声明的变量是否在使用前初始化。

标签: java excel selenium


【解决方案1】:

这是您问题的解决方案:

关于解决方案的几句话-

  1. 避免使用较长的 Excel 表格名称(保持简单,例如“Input.xlsx”)
  2. 作为一种更好的做法,避免在 excel 文件中的文件名、目录名和工作表名中放置空格。
  3. 确保您的 Excel 文件名不会以多个扩展名结尾(例如“Input.xlsx.xlsx”)
  4. 执行任务后始终关闭XSSFWorkbook 对象。
  5. 当您启动 try{} 块时,请正确关闭它。
  6. Try{} 块必须至少后跟一个 catch{} 块。
  7. 尝试抓住Base Exception
  8. 保持代码干净,删除不需要的代码。
  9. 这是您自己的工作代码,删除所有不需要的代码,打开一个 Excel 文件“D:\Functional Automation Data Pest WTO with change before.xlsx”,读取工作表“基本地址详细信息”并计算其中的行数。

            try {
                // Open the Excel file
                File FileNameforScriptsFilePath = new File(
                        "D:\\Functional Automation Data Pest WTO with change before.xlsx");
                FileInputStream FileNameforScriptsFile = new FileInputStream(FileNameforScriptsFilePath);
                XSSFWorkbook DataCleanBefore = new XSSFWorkbook(FileNameforScriptsFile);
                XSSFSheet BasicAddressDetailsBeforeSheet = DataCleanBefore.getSheet("Basic Address Details");
                int rowCount = BasicAddressDetailsBeforeSheet.getLastRowNum();
                System.out.println("Total Rows is : " + (rowCount + 1));
                DataCleanBefore.close();
            } catch (Exception e) {
                System.out.println(e);
    

如果这对你有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多