使用POI读取和写入Excel数据 - 在写入新数据后从excel中删除原始数据

时间:2014-12-04 09:18:07

标签: java excel apache-poi

我首先从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);

2 个答案:

答案 0 :(得分:1)

您正面临这个问题,因为撰写时Excel工作表的索引是相同的。 首先,你应该检查细胞是否为空,然后你应该写。 或者你可以先做getrows()或getcolumn()它会给你行和列的大小。 一旦你有了这个尺寸,你就可以在那个行大小和列之后写下你的数据。

答案 1 :(得分:1)

如果要更新它,还应该使用excel的最后一行更新count变量

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

并做其余的事情......