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;
    }

原文地址:https://www.cnblogs.com/yxth/p/8482860.html

时间: 2024-10-07 20:10:49

java利用poi解析excel文件的相关文章

java 利用 poi 生成 Excel文件的例子

在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题: 1. 生成 Excel 文档. 2. 保护生成Excel文档,设置密码访问. 3. 自动对生成的Excel 文档第一行标题栏设置成filter 过滤形式, 方便用户使用. 用 apache  POI 生成 Excel 文档公用类  程序代码 package com.yihaomen.poi.sampl

java利用poi读取Excel文件

java读取Excel文件,笔者认为:从结构上来看,Excel文件是由一个一个的单元格组成的,有点像细胞cell,逐行的排列.那么我们读的时候也应该逐行逐行的读,从左到右的寻找每一个cell.一.实例代码: 只是实现了一种方式,因为依照读取内容的不同,读取的后想要的操作不同,因此不能苟同全部,只是方法是相通的.说道Excel文件的结构,这货从数学的角度来说,绝对是一个二维数组,因此我就拿字符串二维数组接受读取后的内容,并每个单元格每个单元格的打印.当然也可以返回三维数组(包含该单元格的位置坐标)

java使用POI实现excel文件的读取,兼容后缀名xls和xlsx

需要用的jar包如下: 如果是maven管理的项目,添加依赖如下: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </depen

Apache POI解析Excel文件

1.导入POI的jar包到BOS项目中 2. 使用POI解析Excel文件

结合项目(Spring+(基于注解的)SpringMVC和Mybatis+uploadify文件上传)--poi解析Excel文件

poi解析Excel文件 1.上传文件至服务器 2.解析Excel文件并返回数据集合 3.将数据保存到服务器 框架======Spring+(基于注解的)SpringMVC和Mybatis===== 第一步: 前台: jsp文件采用的是uploadify <div id="fileQueue"></div> <input type="file" id="brandFile"> js: <script ty

poi解析Excel文件版本问题

poi解析Excel文件时有两种格式: HSSFWorkbook格式用来解析Excel2003(xls)的文件 XSSFWorkbook格式用来解析Excel2007(xlsx)的文件 如果用HSSFWorkbook解析Excel2007(xlsx)时就会报异常:“The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office

Java通过jxl解析Excel文件入库,及日期格式处理方式 (附源代码)

JAVA可以利用jxl简单快速的读取文件的内容,但是由于版本限制,只能读取97-03  xls格式的Excel. 本文是项目中用到的一个实例,先通过上传xls文件(包含日期),再通过jxl进行读取上传的xls文件(文件格式见下user.xls),解析不为空的行与列,写入数据库. 文件user.xls格式为: 下面来看代码实例演示: 一.前端jsp页面(本来内容很多,这里精简了) <%@ page language="java" contentType="text/htm

java使用POI操作excel文件,实现批量导出,和导入

一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Excel 95及以后的版本,即可操作后缀为 .xls 和 .xlsx两种格式的excel. POI全称 Poor Obfuscation Implementation,直译为"可怜的模糊实现",利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:htt

java利用poi读取excel异常问题

最近一个web工程需要完成一个小功能,利用文件上传然后读取文件内容写入到数据库,这里是操作的excel文件,excel文件分两种后缀,03版本的xls和之后的xlsx,现在大家一般都拿非常好用的插件直接过来用就可以了,我这里用的是java poi相关资源包. 1,首先要能够读取带xlsx的excel文件,必须要导入如下的jar包 然后遇到的问题是在本地工程下建立的一个测试类测试没有异常,两种excel的文件都能读取,但是一旦发布到web工程下,我的工程是在tomcat下跑的.这里就出现了问题,总