1. 程式人生 > >Springboot 之 使用POI讀取解析Excel檔案

Springboot 之 使用POI讀取解析Excel檔案

本文章來自【知識林】

在上一篇文章《Springboot 之 POI匯出Word檔案》中講述了使用POI對Word的匯出操作,這一篇將繼續講述POI的其他使用:對Excel表格的讀寫操作。

  • 準備Excel原始檔

這裡簡單準備了一個Excel表格,將此檔案命名為:web-info.xls,放到resources目錄下,內容如下圖:

POI讀取Excel檔案的原始檔內容

  • 讀取檔案標題
//讀取單個單元格
@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}

本文章來自【知識林】