我首先从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);
答案 0 :(得分:1)
您正面临这个问题,因为撰写时Excel工作表的索引是相同的。 首先,你应该检查细胞是否为空,然后你应该写。 或者你可以先做getrows()或getcolumn()它会给你行和列的大小。 一旦你有了这个尺寸,你就可以在那个行大小和列之后写下你的数据。
答案 1 :(得分:1)
如果要更新它,还应该使用excel的最后一行更新count变量
int inc = 1;
count = sh.getPhysicalNumberOfRows();
并做其余的事情......