读取Excel的数据(读取时转化Excel中数据值的类型)

依赖

<dependencies>
<!--    poi依赖-->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.1</version>
    </dependency>
<!--    poi对于excel 2007的支持依赖-->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.1</version>
    </dependency>
    <!--    poi对于excel 2007的支持依赖-->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.0.1</version>
    </dependency>

</dependencies>
View Code

java 代码

package com.zhao;

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

/**
 * 加载excel 中的内容
 * POI中getLastRowNum() 和getLastCellNum()的区别
 *  hssfSheet.getLastRowNum();//最后一行行标,比行数小1
 * hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1
 */
public class loadExcel {
    //单元格样式
    public static void main(String[] args) throws Exception {
        //1.创建workbook工作簿
        Workbook wb = new XSSFWorkbook("D:\\projectCode\\poiUtils\\demo.xlsx");
        //2.获取sheet 从0开始
        Sheet sheet = wb.getSheetAt(0);
        Row row = null;
        Cell cell = null;
        //循环所有行
        for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
            row = sheet.getRow(rowNum);
            StringBuilder sb = new StringBuilder();
            //循环每行中的所有单元格
            for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {
                cell = row.getCell(cellNum);
                if(cell==null){
                    continue;
                }
                sb.append(getValue(cell)).append("-");
            }
            System.out.println(sb.toString());
        }
    }

    //获取数据
    private static Object getValue(Cell cell) {
        Object value = null;
        //获取excel 中值的类型
        switch (cell.getCellType()) {
            case STRING: //字符串类型
                value = cell.getStringCellValue();
                break;
            case BOOLEAN: //boolean类型
                value = cell.getBooleanCellValue();
                break;
            case NUMERIC: //数字类型(包含日期和普通数字)
                //DateUtil.isCellDateFormatted 判断数据类型是否为日期
                if (DateUtil.isCellDateFormatted(cell)) {
                    value = cell.getDateCellValue();
                } else {
                    value = cell.getNumericCellValue();
                }
                break;
            case FORMULA: //公式类型
                value = cell.getCellFormula();
                break;
            default:
                break;
        }
        return value;
    }
}
View Code

 

posted @ 2020-01-30 20:21  Angry-rookie  阅读(256)  评论(0)    收藏  举报