Springboot 之 使用POI讀取解析Excel檔案
阿新 • • 發佈:2019-01-09
本文章來自【知識林】
在上一篇文章《Springboot 之 POI匯出Word檔案》中講述了使用POI對Word的匯出操作,這一篇將繼續講述POI的其他使用:對Excel表格的讀寫操作。
- 準備Excel原始檔
這裡簡單準備了一個Excel表格,將此檔案命名為:web-info.xls
,放到resources
目錄下,內容如下圖:
- 讀取檔案標題
//讀取單個單元格
@Test
public void testRead() throws Exception {
//Excel檔案
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(ResourceUtils.getFile("classpath:web-info.xls" )));
//Excel工作表
HSSFSheet sheet = wb.getSheetAt(0);
//表頭那一行
HSSFRow titleRow = sheet.getRow(0);
//表頭那個單元格
HSSFCell titleCell = titleRow.getCell(0);
String title = titleCell.getStringCellValue();
System.out.println("標題是:"+title);
}
執行測試後將得到:標題是:網站資訊管理
- 將資料項讀取到List中
準備一個DTO檔案方便建立物件和輸出內容
public class WebDto {
//網站名稱
private String name;
//網址
private String url;
//使用者名稱
private String username;
//密碼
private String password;
//日均訪問量
private Integer readCount;
public WebDto(String name, String url, String username, String password, Integer readCount) {
this .name = name;
this.url = url;
this.username = username;
this.password = password;
this.readCount = readCount;
}
public WebDto() {}
@Override
public String toString() {
return "WebDto{" +
"name='" + name + '\'' +
", url='" + url + '\'' +
", username='" + username + '\'' +
", password='" + password + '\'' +
", readCount=" + readCount +
'}';
}
}
具體的測試方法:
//讀取到列表
@Test
public void testReadList() throws Exception {
List<WebDto> list = new ArrayList<WebDto>();
HSSFWorkbook book = new HSSFWorkbook(new FileInputStream(ResourceUtils.getFile("classpath:web-info.xls")));
HSSFSheet sheet = book.getSheetAt(0);
for(int i=2; i<sheet.getLastRowNum()+1; i++) {
HSSFRow row = sheet.getRow(i);
String name = row.getCell(0).getStringCellValue(); //名稱
String url = row.getCell(1).getStringCellValue(); //url
String username = row.getCell(2).getStringCellValue();
String password = row.getCell(3).getStringCellValue();
Integer readCount = (int) row.getCell(4).getNumericCellValue();
list.add(new WebDto(name, url, username, password, readCount));
}
System.out.println("共有 " + list.size() + " 條資料:");
for(WebDto wd : list) {
System.out.println(wd);
}
}
執行測試方法後將得到:
共有 2 條資料:
WebDto{name='知識林', url='http://www.zslin.com', username='admin', password='111111', readCount=500}
WebDto{name='使用者管理', url='http://basic.zslin.com/admin', username='admin', password='111111', readCount=123}
本文章來自【知識林】