seleniumWebdriver复制ExcelSheet

我试图将包含7个名为Excel.xls表单的Excel表单复制到ExcelCopy.xls中,但是在@AfterTest中获取JavaNullException错误,并且对于此selenium代码非常新,请帮助我!

package TestNG; import java.io.FileInputStream; import java.io.FileOutputStream; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.Test; import org.testng.annotations.BeforeTest; import org.testng.annotations.AfterTest; public class DuplicateExcelSheet { WebDriver driver; WebDriverWait wait; Workbook w; Sheet s; FileInputStream fi; FileOutputStream fo; WritableWorkbook ww; WritableSheet ws; @Test public void f() throws Exception{ int colCount=s.getColumns(); System.out.println(colCount); ww=Workbook.createWorkbook(fo, w); ws=ww.createSheet("Data", 0); for (int i = 0; i < colCount; i++) { String s1=s.getCell(i, 0).getContents(); Label l=new Label(i,0,s1); ws.addCell(l); } } @BeforeTest public void beforeTest() throws Exception{ fi=new FileInputStream("E:\\selenium\\Excel.xls"); w=Workbook.getWorkbook(fi); s=w.getSheet(0); fo=new FileOutputStream("E:\\selenium\\ExcelCopy.xls"); } @AfterTest public void afterTest() throws Exception{ ww.write(); w.close(); fi.close(); fo.close(); } } 

我假设你想复制完整的Excel工作簿。 如果,所以使用FileUtil更容易,更less的编码。 好的是你不必担心目的地目录,文件等,如果目的地存在,它也会覆盖。

 File sourceExcel = new File("D:\\Users\\Saifur\\Desktop\\Delete\\excelFrom\\Selenium.xlsx"); File dstExcel = new File("D:\\Users\\Saifur\\Desktop\\Delete\\excelTo\\Selenium_Copy.xlsx"); try { FileUtils.copyFile(sourceExcel, dstExcel); } catch (IOException e) { e.printStackTrace(); } 

确保你有下面的导入

 import org.apache.commons.io.FileUtils; 

Maven回购这里

它看起来像你声明FileOutputStream fo作为一个类的成员,但你不分配在任何地方。 所以,当你尝试调用fo.close()时,它在第55行是NULL

如果没有使用fo ,我build议你把它从这个类中删除。