zoukankan      html  css  js  c++  java
  • java利用poi解析excel文件

    首先需要引入以下jar包

    如果使用maven,需要添加两个依赖

      <dependencies>
        <dependency>
              <groupId>org.apache.poi</groupId>
              <artifactId>poi</artifactId>
              <version>3.15</version>
          </dependency>
          <dependency>
              <groupId>org.apache.poi</groupId>
              <artifactId>poi-ooxml</artifactId>
              <version>3.15-beta2</version>
          </dependency>
      </dependencies>

    excel分为两种后缀,一是xls,二是xlsx。

    首先针对xls格式的excel进行解析:

        public List<String[]> readExcel(File file){
            List<String[]> list = new ArrayList<>();
            
            try {
                HSSFWorkbook hw = new HSSFWorkbook(new FileInputStream(file));
                
                for (int i = 0; i < hw.getNumberOfSheets(); i++) {
                    HSSFSheet hs = hw.getSheetAt(i);
                    if(hs.getLastRowNum() == 0)
                        continue;
                    
                    for (int j = 0; j <= hs.getLastRowNum(); j++) {//
                        HSSFRow row = hs.getRow(j);
                        String[] array = new String[row.getLastCellNum()];
                        
                        for (int k = 0; k < row.getLastCellNum(); k++) {
                            HSSFCell cell = row.getCell(k);
                            array[k] = this.getValue(cell);
                        }
                        list.add(array);
                    }
                }
                
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            
            return list;
        }
        
        private String getValue(HSSFCell cell){
            String value;
            CellType type = cell.getCellTypeEnum();
            
            switch (type) {
            case STRING:
                value = cell.getStringCellValue();
                break;
            case BLANK:
                value = "";
                break;
            case BOOLEAN:
                value = cell.getBooleanCellValue() + "";
                break;
            case NUMERIC:
                value = cell.getNumericCellValue() + "";
                break;
            case FORMULA:
                value = cell.getCellFormula();
                break;
            case ERROR:
                value = "非法字符";
                break;
            default:
                value = "";
                break;
            }
            return value;
        }

    对于xlsx格式的excel,与上者的区别在于将HSSF***换成XSSF***,样例如下:

        public List<String[]> readExcel(File file){
            List<String[]> list = new ArrayList<>();
            
            try {
                XSSFWorkbook xw = new XSSFWorkbook(new FileInputStream(file));
                
                for (int i = 0; i < xw.getNumberOfSheets(); i++) {
                    XSSFSheet xs = xw.getSheetAt(i);
                    if(xs.getLastRowNum() == 0)
                        continue;
                    
                    for (int j = 0; j <= xs.getLastRowNum(); j++) {
                        XSSFRow row = xs.getRow(j);
                        String[] array = new String[row.getLastCellNum()];
                        
                        for (int k = 0; k <= row.getLastCellNum(); k++) {
                            XSSFCell cell = row.getCell(k);
                            if(cell == null)
                                continue;
                            array[k] = this.getValue(cell);
                        }
                        list.add(array);
                    }
                }
                
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            
            return list;
        }
        
        private String getValue(XSSFCell cell){
            String value;
            CellType type = cell.getCellTypeEnum();
            
            switch (type) {
            case STRING:
                value = cell.getStringCellValue();
                break;
            case BLANK:
                value = "";
                break;
            case BOOLEAN:
                value = cell.getBooleanCellValue() + "";
                break;
            case NUMERIC:
                value = cell.getNumericCellValue() + "";
                break;
            case FORMULA:
                value = cell.getCellFormula();
                break;
            case ERROR:
                value = "非法字符";
                break;
            default:
                value = "";
                break;
            }
            return value;
        }
  • 相关阅读:
    java 虚拟机启动参数[转]
    Android SDK Manager 无法下载更新,或者更新速度超慢,或者待安装包列表不显示
    fluentnhibernet auto mapping
    取消sqlserver 锁表
    TFS 2010 配置的时候,提示TF255466错误
    doc中文乱码的解决方法 中英文切换
    silverlight 读取wcf服务 读取宿主端的config 良好的方法
    dojo+js+html5学习网址
    win 7 64位 配置silverlight 32位的应用程序(sl网站)
    HTTP协议及其POST与GET操作差异 & C#中如何使用POST、GET等
  • 原文地址:https://www.cnblogs.com/yxth/p/8482860.html
Copyright © 2011-2022 走看看