2014-12-04 5 views
0

Excel에서 데이터를 처음 읽은 후 동일한 Excel에서 작성합니다. 그것은 처음에는 잘 작동합니다. 데이터가 기록 된 직후에 처음부터 있던 원래 데이터를 삭제합니다.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); 

답변

1

, 당신은 또한 엑셀

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

의 마지막 라인 카운트 변수를 업데이트하고 나머지를 ...

+0

어디에서해야합니까? 이미 count = 0을 설정했기 때문에; 또한 카운트가 내 코드대로 잘 작동합니다. 새로운 데이터가 한 행씩 쓰여집니다. 그래서 문제가되지 않습니다. 나는 새로운 데이터를 쓸 때 Excel에서 원래의 데이터를 안전하게 유지하려고합니다. –

+0

@Helping Handsing, 네가 처음으로 글을 쓰고 있지만 그 뒤에는 이미 줄이 있기 때문에 마지막 줄 다음에 써야한다. 그렇지 않은가? inc를 1로 설정 한 후이 작업을 수행해야합니다 ... – sboda

+0

데이터 유형을 count 변수로 설정해야합니다. 또한 count를 이미 사용 했으므로 count1이라는 새 변수를 만들어야합니다. –

1

당신은 문제에 직면하고있다. 먼저 셀이 비어 있는지 확인한 다음 작성해야합니다. 또는 먼저 getrows() 또는 getcolumn()을 사용하여 행과 열의 크기를 알 수 있습니다. 일단 크기를 지정하면 행 크기 및 열 뒤에 데이터를 쓸 수 있습니다. 당신이 그것을 업데이트하는 경우

+0

을하지만 2에서 데이터를 기록하기 시작하고있다한다 col 및 첫 번째 셀. 그렇다면 왜 그 문제가 발생 했습니까? –

+0

항상 두 번째 열과 첫 번째 셀에서 시작할 것이기 때문에 인덱스를 명시 적으로 언급하지 말고 런타임에 인덱스를 가져와야합니다. –

+0

그러나 데이터를 읽을 때 어떤 루프도 사용하지 않았습니다. 그렇다면 어떻게 런타임 인덱스를 얻을 수 있습니까? –

관련 문제