1. 程式人生 > >java 讀取本地excel 檔案,將excel內容轉換成java物件

java 讀取本地excel 檔案,將excel內容轉換成java物件

操作工具 eclipse + maven 

1. java操作excel所使用的jar包 poi-ooxml

        <dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml</artifactId>
     <version>3.14</version>

        </dependency>

2.在本地建立一個excel檔案

    路徑:C:/Users/liuyouchao/Desktop/test.xlsx 

    內容如下

    

3.書寫程式碼實現

package com.daojia.certify.excelimport;

import java.io.FileInputStream;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.alibaba.fastjson.JSON;

import com.daojia.certify.util.DateBuilder;

/**

 * @Description : TODO匯入excel

 * @date : Mar 31, 2018 5:17:14 PM

 */

public class ExcelImport {

public static void main(String args[]){

ExcelImport  excelImport = new ExcelImport();

try {

excelImport.importExcelAction();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

    //匯入Excel資料

public void importExcelAction() throws Exception {          

//檔案路徑

        String filePath ="C:/Users/daojia/Desktop/test.xlsx";

      XSSFWorkbook wookbook = new XSSFWorkbook(new FileInputStream(filePath));

      XSSFSheet sheet = wookbook.getSheet("Sheet1");

      //獲取到Excel檔案中的所有行數

      int rows = sheet.getPhysicalNumberOfRows();

      //遍歷行

      List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

      for (int i = 1; i < rows; i++) {

        // 讀取左上端單元格

        XSSFRow row = sheet.getRow(i);

        // 行不為空

        if (row != null) {

            Map<String,Object> map = new HashMap<String,Object>();  

        //獲取到Excel檔案中的所有的列

        int cells = row.getPhysicalNumberOfCells(); 

            //姓名

            XSSFCell nameCell =row.getCell(1); 

            String name = getValue(nameCell);

            //性別

            XSSFCell sexCell =row.getCell(2); 

            String sex = getValue(sexCell);    

            //年齡

            XSSFCell ageCell =row.getCell(3); 

            String age = getValue(ageCell);    

            //出生年月

            XSSFCell birthCell =row.getCell(4); 

            String birth = DateBuilder.convertDateToString(birthCell.getDateCellValue(), "yyyy-MM-dd");   

          map.put("name", name);

          map.put("sex", sex);

          map.put("age", age);

          map.put("birth", birth); 

          list.add(map);

            }       

      }

      System.out.println("list = "+JSON.toJSONString(list));

}

private String getValue(XSSFCell xSSFCell){

if(null == xSSFCell){

return "";

}

if (xSSFCell.getCellType() == xSSFCell.CELL_TYPE_BOOLEAN) {  

                 // 返回布林型別的值  

                 return String.valueOf(xSSFCell.getBooleanCellValue());  

             } else if (xSSFCell.getCellType() == xSSFCell.CELL_TYPE_NUMERIC) {  

                 // 返回數值型別的值  

                 return String.valueOf(xSSFCell.getNumericCellValue());  

             } else {  

                 // 返回字串型別的值  

                 return String.valueOf(xSSFCell.getStringCellValue());  

             }  

}

輸出結果

list = [{"age":"","birth":"1991-09-03","name":"張三","sex":"男"},{"age":"23.0","birth":"1992-09-03","name":"李四","sex":"女"},{"age":"34.0","birth":"1993-09-03","name":"王五","sex":"男"},{"age":"54.0","birth":"1994-09-03","name":"趙六","sex":"女"}]

注意:

    1.如果excel格式為 .xlsx ,使用以上方法,如果excel格式為 .xls 以上的  XSSFCell 變成  HSSFCell

    2.excel中的日期處理

            首先將excel日期設定格式為 2017/09/08  

            其次使用 getDateCellValue 方法讀取日期格式即可