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

时间:2017-05-09 05:47:03

标签: java excel selenium

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

 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天后挣扎。

1 个答案:

答案 0 :(得分:0)

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

关于解决方案的几句话 -

  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:\功能自动化数据害虫WTO,更改之前的.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);
    
  10. 如果这有助于您,请告诉我。