我想讀取一個html表格並將數據寫入Excel。 什麼是最好的,最快的方法來實現呢? 我有一個包含13529行,37列的HTML表格。讀取數據〜1Hr +的時間太長,我無法想象將這些數據寫入excel需要多長時間。 不知道我在這裏做錯了什麼。 任何建議表示讚賞。提前致謝。閱讀HTML表格並寫入Excel - 使用POI的Selenium WebDriver
讀取數據從HTML表代碼:
private List<WebElement> getData(String object){
System.out.println("Object = ="+OR.getProperty(object));
List<WebElement> tr_collection = driver.findElements(By.xpath(OR.getProperty(object)));
System.out.println("NUMBER OF ROWS IN THIS TABLE = " + tr_collection.size());
int row_num, col_num;
row_num = 1;
for (WebElement trElement : tr_collection) {
List<WebElement> td_collection = trElement.findElements(By.xpath("td")).size() == 0?trElement.findElements(By.xpath("th")):trElement.findElements(By.xpath("td"));
System.out.println("NUMBER OF COLUMNS=" + td_collection.size());
col_num = 1;
for (WebElement tdElement : td_collection) {
System.out.println("row # " + row_num + ", col # " + col_num + ", text | " + tdElement.getText());
col_num++;
}
row_num++;
System.out.println("================================================================================");
}
return tr_collection;
}
將數據寫入Excel工作表:
private void writeExcel(List<WebElement> tr_collection,XSSFWorkbook workbook,XSSFSheet spreadsheet,String fileName){
//HSSFRow row;
for (int i=0; i<tr_collection.size(); i++)
{
WebElement webRow = tr_collection.get(i);
//Get all cell values in each row
List<WebElement> allCells = new ArrayList<>();
if(webRow.findElements(By.tagName("th")).size() > 0){
allCells = webRow.findElements(By.tagName("th"));
}else{
allCells = webRow.findElements(By.tagName("td"));
}
//System.out.println(allCells.size());
if(allCells.size() > 1)
{
XSSFRow excelRow = spreadsheet.createRow(i);
for (int j=0; j<allCells.size(); j++)
{
WebElement webCell = allCells.get(j);
String text = webCell.getText();
XSSFCell cell = excelRow.createCell(j);
cell.setCellValue(text);
}
}
}
try {
FileOutputStream fileOut = new FileOutputStream(fileName);
//write this workbook to an Outputstream.
workbook.write(fileOut);
fileOut.flush();
fileOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
讓我知道是否需要任何進一步的細節。 – Nag
你能分享一個鏈接到包含表格或一些例子表格的頁面嗎?提高輸出速度的一個建議是寫入CSV(文本文件)。然後,您可以輕鬆地將CSV導入到Excel中,這可能會爲您節省很多時間。使用寫緩衝區也可以幫助事情更快。 – JeffC
如果您能夠確切知道這樣做的目的,那麼有很多選擇。如果它像一個實用工具,以減少您的一般工作,你甚至可以使用動作類和機器人API複製和粘貼。 –