zoukankan      html  css  js  c++  java
  • 使用poi读取excel数据示例

    使用poi读取excel数据示例

    分两种情况:

      一种读取指定单元格的值

      另一种是读取整行的值

    依赖包:

    <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.15</version>
    </dependency>

    代码示例:

        public String getCellFromExcel(String path, String row, String col) throws Exception {
            return getCellFromExcel(path, 0, Integer.valueOf(row), Integer.valueOf(col));
        }
    
        public String getRowFromExcel(String path, String row) throws Exception {
            return getRowFromExcel(path, 0, Integer.valueOf(row));
        }
    
        public String getRowFromExcel(String path, int sheet, int row) throws Exception {
            File xlsx = new File(path);
            Workbook workbook = WorkbookFactory.create(xlsx);
            Sheet sheet1 = workbook.getSheetAt(sheet);
            Row row1 = sheet1.getRow(row);
            List<String> list = new ArrayList<>();
            int rowNum = row1.getLastCellNum();
            for (int i = 0; i < rowNum; i++) {
                list.add(getCellValueByCell(row1.getCell(i)));
            }
            logger.info("文件名:{},sheet:{},row:{},取值:{}", path, sheet, row, list.toString());
            return list.toString();
        }
    
    
        public String getCellFromExcel(String path, int sheet, int row, int col) throws Exception {
            File xlsx = new File(path);
            Workbook workbook = WorkbookFactory.create(xlsx);
            Sheet sheet1 = workbook.getSheetAt(sheet);
            Row row1 = sheet1.getRow(row);
            String cell = getCellValueByCell(row1.getCell(col));
            logger.info("文件名:{},sheet:{},row:{},col:{},取值:{}", path, sheet, row, col, cell);
            return cell;
        }
    
        //获取单元格各类型值,返回字符串类型
        private static String getCellValueByCell(Cell cell) {
            //判断是否为null或空串
            if (cell == null || cell.toString().trim().equals("")) {
                return "";
            }
            String cellValue = "";
            int cellType = cell.getCellType();
    
            // 以下是判断数据的类型
            switch (cellType) {
                case HSSFCell.CELL_TYPE_NUMERIC: // 数字
    
                    if (0 == cell.getCellType()) {//判断单元格的类型是否则NUMERIC类型
                        if (HSSFDateUtil.isCellDateFormatted(cell)) {// 判断是否为日期类型
                            Date date = cell.getDateCellValue();
                            DateFormat formater = new SimpleDateFormat(
                                    "yyyy-MM-dd HH:mm");
                            cellValue = formater.format(date);
                        } else {
                            cellValue = cell.getNumericCellValue() + "";
                        }
                    }
                    break;
    
    
                case HSSFCell.CELL_TYPE_STRING: // 字符串
                    cellValue = cell.getStringCellValue();
                    break;
    
    
                case HSSFCell.CELL_TYPE_BOOLEAN: // Boolean
                    cellValue = cell.getBooleanCellValue() + "";
                    break;
    
    
                case HSSFCell.CELL_TYPE_FORMULA: // 公式
                    cellValue = cell.getCellFormula() + "";
                    break;
    
    
                case HSSFCell.CELL_TYPE_BLANK: // 空值
                    cellValue = "";
                    break;
    
    
                case HSSFCell.CELL_TYPE_ERROR: // 故障
                    cellValue = "非法字符";
                    break;
    
    
                default:
                    cellValue = "未知类型";
                    break;
    
            }
            return cellValue;
        }
  • 相关阅读:
    消息中间件三、RabbitMQ学习一
    消息队列学习一 概念
    发送网络请求调用第三方接口(spring boot框架)
    动态生成javaBean
    达梦dm数据库远程备份与恢复
    springboot定时任务的使用
    抽象与接口
    电商网站后台九大功能模块详解
    面向对象设计—类和对象
    常用的数据结构—数组
  • 原文地址:https://www.cnblogs.com/gongxr/p/10935881.html
Copyright © 2011-2022 走看看