2017-02-07 21 views
0

私はほぼ1500 rowsのWebテーブルを持っています。すべての行データをExcelに書きたいと思います。
WebテーブルデータをExcelに書き込む

私はSelenium-Webdriver,Javaを使用しています。問題は約300行を書き込んだ後もエラーなしにプログラムが停止しています。

すべてのデータをExcelに書き込むにはどうすればいいですか?もし私がthraed.sleep(5000);にそれを与えるのに時間がかかります。

私が言及したコードの下に使用しています

List<WebElement> irows = a2.findElements(By.xpath("//*[@id='filter_result']/table/tbody/tr/td[2]/a[1]"));  
    int iRowsCount = irows.size(); 

System.out.println(iRowsCount); 



FileOutputStream fos = new FileOutputStream("E:\\jega\\testw3.xlsx"); 

XSSFWorkbook wkb = new XSSFWorkbook(); 

XSSFSheet sheet1 = wkb.createSheet("DataStorage"); 
    String a3=null; 

for (int i=500,Row=0;i<=iRowsCount;i++) { 



    try 
    { 
     WebElement val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[2]")); 
     // WebElement val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td["+j+"]")); 
     String a = val.getText(); 



     if(a.length() != 0) 

     { 

      a3=a; 

     //int length = val.length(); 

     System.out.print(a3 + '\n'); 

     XSSFRow excelRow = sheet1.createRow(Row++); 
     XSSFCell excelCell = excelRow.createCell(0);     
     excelCell.setCellType(XSSFCell.CELL_TYPE_STRING);     
     excelCell.setCellValue(a3); 



     for (int j=5;j<12;j++) 

     { switch (j) 
      { 
     case 5:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[5]"));excelCell = excelRow.createCell(1);        
     excelCell.setCellValue(val.getText()); break; 
     case 8:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[8]"));excelCell = excelRow.createCell(2);        
     excelCell.setCellValue(val.getText());break; 
     case 9:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[9]"));excelCell = excelRow.createCell(3);        
     excelCell.setCellValue(val.getText());break; 
     case 11:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[11]"));excelCell = excelRow.createCell(4);        
     excelCell.setCellValue(val.getText());break; 
      } 


     } 


     Thread.sleep(5000); 
     } 


     else 


     { 

      System.out.print(a3 + '\n'); 

      XSSFRow excelRow = sheet1.createRow(Row++); 
      XSSFCell excelCell = excelRow.createCell(0);     
      excelCell.setCellType(XSSFCell.CELL_TYPE_STRING);     
      excelCell.setCellValue(a3); 



      for (int j=5;j<12;j++) 

      { switch (j) 
       { 
      case 5:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[5]"));excelCell = excelRow.createCell(1);        
      excelCell.setCellValue(val.getText()); break; 
      case 8:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[8]"));excelCell = excelRow.createCell(2);        
      excelCell.setCellValue(val.getText());break; 
      case 9:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[9]"));excelCell = excelRow.createCell(3);        
      excelCell.setCellValue(val.getText());break; 
      case 11:val= a2.findElement(By.xpath("//*[@id='filter_result']/table/tbody/tr["+i+"]/td[11]"));excelCell = excelRow.createCell(4);        
      excelCell.setCellValue(val.getText());break; 
       } 


      } 


      Thread.sleep(5000); 
      } 


    }//tryc 

    catch (NoSuchElementException e) { 


     }//cath 

     }//for 


    // System.out.println(); 
    // Thread.sleep(6000); 


    fos.flush();  
    wkb.write(fos);  
    fos.close(); 

誰もがこの問題で私を助けることができますか?
ご協力いただき誠にありがとうございます。
よろしくお願いいたします。

+0

あなたは 'for'に到達したときiRowsCount''の値は何ですか? – Guy

+0

"プログラムは何のエラーもなく停止しました"ので、まずはキャッチされた例外を使って何かを行わなければなりません。 – kotoj

+0

ええ、私はループ(int i = 500、Row = 0; i <= 2000; i ++)のために変更しましたが、今は正常に動作しています。皆さんありがとう.. –

答えて

0

私はまた、このようなExcelシートにWebテーブルのデータをエクスポートしました。 これはうまく動作します。これがあなたを助けることを願っています。

WebElement element = driver.findElement(By.xpath("//*[@id='entireBody']/div[3]/div/table")); 
 
\t \t \t \t List<WebElement> tbdy = element.findElements(By.tagName("tbody")); 
 
\t \t \t \t List<WebElement> thed = element.findElements(By.tagName("thead")); 
 
\t \t \t \t Thread.sleep(1000); 
 
\t \t \t \t List<WebElement> tr = tbdy.get(0).findElements(By.tagName("tr")); 
 
\t \t \t \t List<WebElement> trh = thed.get(0).findElements(By.tagName("tr")); 
 
\t \t \t \t Thread.sleep(1000); 
 
\t \t \t \t try { 
 
\t \t \t \t \t String filename = Path; 
 
\t \t \t \t \t HSSFWorkbook workbook = new HSSFWorkbook(); 
 
\t \t \t \t \t HSSFSheet sheet = workbook.createSheet("FirstSheet"); 
 
\t \t \t \t \t CellStyle style = workbook.createCellStyle();//Create style 
 
\t \t \t \t  Font font = workbook.createFont();//Create font 
 
\t \t \t \t  font.setBoldweight(Font.BOLDWEIGHT_BOLD);//Make font bold 
 
\t \t \t \t  style.setFont(font);//set it to bold 
 
\t \t \t \t  HSSFRow row = sheet.createRow(0); 
 
\t \t \t \t  for(int i = 0; i < trh.size(); i++){ 
 
\t \t \t \t  \t List<WebElement> tdh =trh.get(i).findElements(By.tagName("td")); 
 
\t \t \t \t  \t System.out.println("loop1"); 
 
\t \t \t \t  \t for (int j = 0; j < tdh.size(); j++) { 
 
\t \t \t \t  \t \t 
 
\t \t \t \t \t  \t row.createCell(j).setCellValue(tdh.get(j).getText()); 
 
\t \t \t \t \t  \t row.getCell(j).setCellStyle(style); 
 
\t \t \t \t \t  \t 
 
\t \t \t \t \t \t } 
 
\t \t \t \t  \t 
 
\t \t \t \t  \t 
 
\t \t \t \t  } 
 
\t \t \t \t \t for (int i = 0; i < tr.size(); i++) { 
 
\t \t \t \t \t \t HSSFRow row2 = sheet.createRow(i+1); 
 
\t \t \t \t \t \t List<WebElement> td = tr.get(i).findElements(By.tagName("td")); 
 
\t \t \t \t \t \t for (int j = 0; j < td.size(); j++) { 
 
\t \t \t \t \t \t \t td.get(j).getText(); 
 

 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t row2.createCell(j).setCellValue(td.get(j).getText()); 
 
\t \t \t \t \t \t } 
 

 
\t \t \t \t \t } 
 
\t \t \t \t \t FileOutputStream fileOut = new FileOutputStream(filename); 
 
\t \t \t \t \t workbook.write(fileOut); 
 
\t \t \t \t \t fileOut.close(); 
 
\t \t \t \t \t System.out.println("Your excel file has been generated!");

関連する問題