使用POI读取和写入数据以实现卓越 – 在写入新数据后,它将从Excel中删除原始数据

我首先从Excel中读取数据,然后写入相同的Excel中。 它第一次正常工作。 在写入数据之后, 它从一开始就删除了我原来的数据。

代码如下:

public static void main (String args[]) throws Exception { //CODE TO REMOVE UNNECESSARY WARNING System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.Jdk14Logger"); //CALL FIREFOX DRIVER TO OPEN IT WebDriver driver = new FirefoxDriver(); driver.get("https://www.google.co.in/?gfe_rd=cr&ei=VQiAVOeCFavM8gf59IHACg&gws_rd=ssl#q=software+testing"); java.util.List<WebElement> links = driver.findElements(By.tagName("h3")); int sizecount = links.size(); System.out.println(sizecount); FileInputStream input = new FileInputStream("D:\\sel.xls"); int count=0; HSSFWorkbook wb = new HSSFWorkbook(input); HSSFSheet sh = wb.getSheet("sheet1"); HSSFRow row = sh.getRow(count); String data = row.getCell(0).toString(); System.out.println(data); FileOutputStream webdata = new FileOutputStream ("D:\\sel.xls"); int inc = 1; for(int i=1;i<=links.size()-1;i++) { HSSFRow row1 = sh.createRow(count); row1.createCell(inc).setCellValue(links.get(i).getText()); count++; } wb.write(webdata); 

如果你正在更新它,你也应该用excel的最后一行更新countvariables

  int inc = 1; count = sh.getPhysicalNumberOfRows(); 

然后rest

你正面临着这个问题,因为当你写作时,excel表格的索引是相同的。 首先,你应该检查单元格是否空了,那么你应该写。 或者你可以先做getrows()或getcolumn(),它会给你行和列的大小。 一旦你有足够的大小,你就可以在你的数据行和列之后写下你的数据。