无法使用POI和Java for Selenium读取excel文件

无法使用POI和Java for Selenium读取excel文件,java,excel,selenium,Java,Excel,Selenium,我的脚本是检查两个excel文件(从web应用程序以不同的时间间隔导出的xlsx,如更新前和更新后),其中包含相同数量的选项卡和多列。一切都是一样的,但我必须比较这些值。我已经打了4盘了,但在第5盘的时候我很挣扎。无法读取该文件。检查1)尺寸2)缩小了图纸3)删除了一些数据,但没有使用。有时它在调试1:10时读取,但在运行时它会显示Null指针异常 try { // Open the Excel file String FileNameforScriptsFil

我的脚本是检查两个excel文件(从web应用程序以不同的时间间隔导出的xlsx,如更新前和更新后),其中包含相同数量的选项卡和多列。一切都是一样的,但我必须比较这些值。我已经打了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天以来一直在挣扎。

以下是您问题的解决方案:

关于解决方案的几句话-

  • 避免保留较长的excel工作表名称(保持简单,例如“Input.xlsx”)
  • 更好的做法是避免在excel文件中的文件名、目录名和工作表名中使用空格
  • 确保excel文件名不会以多个扩展名结尾(例如“Input.xlsx.xlsx”)
  • 执行任务后,始终关闭
    XSSFWorkbook
    对象
  • 启动
    try{}
    块时,请正确关闭它
  • Try{}
    块后面必须至少跟一个
    catch{}
  • 尝试捕获
    基本异常
  • 保持代码干净,删除不需要的代码
  • 这是您自己的工作代码,用于删除所有不需要的代码,从而打开excel文件“D:\Functional Automation Data 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);
    

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

    您好,当您的任何变量被声明但未初始化时,我们将获得nullpointer。交叉检查所有声明的变量是否在使用前已初始化。