Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法

发布时间 - 2026-01-11 03:10:20    点击率:

Java 中POI 导入EXCEL2003 和EXCEL2007的实现方法

实现代码:

import java.io.FileInputStream; 
import java.io.IOException; 
import java.math.BigDecimal; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.List; 
 
import org.apache.poi.POIXMLException; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFDateUtil; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.poifs.filesystem.OfficeXmlFileException; 
import org.apache.poi.ss.usermodel.Cell; 
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; 
 
/** 
 * excel 导入功能 
 * @author lyq 20150312 
 * @version 1.0 
 */ 
public class ExcelUtils { 
   
  public List<Object[]> importExcel(String filePath) throws Exception{ 
    List<Object[]> list=new ArrayList<Object[]>(); 
    String fileType=filePath.substring(filePath.lastIndexOf(".")+1); 
    try { 
      if("xls".equalsIgnoreCase(fileType)){ 
        list= importExcel03(filePath); 
      }else{ 
        list= importExcel07(filePath); 
      } 
    } catch(OfficeXmlFileException e){//通过手动修改文件名 引起的异常 比如 3.xlsx 重命名 3.xls 其实际文件类型为xlsx 
      list=importExcel07(filePath); 
    } catch(POIXMLException e){//通过手动修改文件名 引起的异常 比如 3.xls 重命名 3.xlsx 其实际文件类型为xls 
      list=importExcel03(filePath); 
    } 
    return list; 
  } 
  public List<Object[]> importExcel03(String filePath) throws IOException{ 
    FileInputStream in=new FileInputStream(filePath); 
    List<Object[]> list=new ArrayList<Object[]>(); 
    HSSFWorkbook wb=new HSSFWorkbook(in); 
    HSSFSheet sheet = wb.getSheetAt(0); 
    int rows = sheet.getPhysicalNumberOfRows(); 
    HSSFRow row=sheet.getRow(0); 
    int cells=row.getLastCellNum(); 
    Object[] csr=null; 
    for(int i=1;i<rows;i++){ 
      row=sheet.getRow(i); 
      csr=new String[cells]; 
      for(int j=0;j<cells;j++){ 
        HSSFCell cell=row.getCell(j); 
        Object obj=null; 
        if(cell!=null){ 
          obj=getValue(cell); 
        } 
        csr[j]=obj; 
      } 
      list.add(csr); 
    } 
    if(in!=null)in.close(); 
    return list; 
  } 
  public List<Object[]> importExcel07(String filePath) throws IOException{ 
    List<Object[]> list=new ArrayList<Object[]>(); 
    FileInputStream in=new FileInputStream(filePath); 
    XSSFWorkbook wb=new XSSFWorkbook(in); 
    XSSFSheet sheet = wb.getSheetAt(0); 
    int rows = sheet.getPhysicalNumberOfRows(); 
    XSSFRow row=sheet.getRow(0); 
    int cells=row.getLastCellNum(); 
    Object[] csr=null; 
    for(int i=1;i<rows;i++){ 
      row=sheet.getRow(i); 
      csr=new String[cells]; 
      for(int j=0;j<cells;j++){ 
        XSSFCell cell=row.getCell(j); 
        Object obj=null; 
        if(cell!=null){ 
          obj=getValue(cell); 
        } 
        csr[j]=obj; 
      } 
      list.add(csr); 
    } 
    if(in!=null)in.close(); 
    return list; 
  } 
  @SuppressWarnings("static-access") 
  public String getValue(Cell cell){ 
    int type=cell.getCellType(); 
    String s=""; 
    if(type==cell.CELL_TYPE_NUMERIC){ 
      if(HSSFDateUtil.isCellDateFormatted(cell)){ 
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
        s=sdf.format(cell.getDateCellValue()); 
      }else { 
        BigDecimal db = new BigDecimal(cell.getNumericCellValue()); 
        s=String.valueOf(db); 
      } 
    }else if(type==cell.CELL_TYPE_STRING){ 
      s=cell.getStringCellValue(); 
    }else if(type==cell.CELL_TYPE_BOOLEAN){ 
      s=cell.getBooleanCellValue()+""; 
    }else if(type==cell.CELL_TYPE_FORMULA){ 
      s=cell.getCellFormula(); 
    }else if(type==cell.CELL_TYPE_BLANK){ 
      s=" "; 
    }else if(type==cell.CELL_TYPE_ERROR){ 
      s=" "; 
    }else{ 
       
    } 
    return s.trim(); 
  } 
  /** 
   * @param args 
   */ 
  public static void main(String[] args) { 
    ExcelUtils ex=new ExcelUtils(); 
    try { 
      List<Object[]> list=ex.importExcel("D:\\3.xls"); 
      for(Object[] ss:list){ 
        for(Object s:ss){ 
          System.out.print(s+"\t"); 
        } 
        System.out.println(); 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
  } 
 
} 

注意:

jdk使用版本(影响excel07)

所使用的核心jar如下

poi-3.8-20120326.jar
poi-ooxml-3.8-20120326.jar
poi-ooxml-schemas-3.8-20120326.jar
xmlbeans-2.3.0.jar

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # 中POI  # 导入EXCEL2003  # 和EXCEL2007  # POI的使用方法  # java 中 poi解析Excel文件版本问题解决办法  # java使用POI批量导入excel数据的方法  # java使用POI操作excel文件  # Java使用poi将word转换为html  # JAVA使用POI获取Excel的列数与行数  # java的poi技术读取和导入Excel实例  # 重命名  # 如有  # 希望能  # 谢谢大家  # 疑问请  # version  # lyq  # lt  # Object  # public  # ExcelUtils  # XSSFCell  # XSSFRow  # Cell  # xssf  # excel  # author  # XSSFSheet  # XSSFWorkbook  # gt 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  如何用IIS7快速搭建并优化网站站点?  javascript基本数据类型及类型检测常用方法小结  制作电商网页,电商供应链怎么做?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel如何使用Sanctum进行API认证?(SPA实战)  Python3.6正式版新特性预览  成都网站制作公司哪家好,四川省职工服务网是做什么用?  jquery插件bootstrapValidator表单验证详解  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何用好域名打造高点击率的自主建站?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  青岛网站建设如何选择本地服务器?  ,怎么在广州志愿者网站注册?  Laravel如何自定义错误页面(404, 500)?(代码示例)  海南网站制作公司有哪些,海口网是哪家的?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  javascript读取文本节点方法小结  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel distinct去重查询_Laravel Eloquent去重方法  EditPlus中的正则表达式实战(5)  详解jQuery中基本的动画方法  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  在线制作视频的网站有哪些,电脑如何制作视频短片?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何用AI帮你把自己的生活经历写成一个有趣的故事?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  如何快速上传建站程序避免常见错误?  Android GridView 滑动条设置一直显示状态(推荐)  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  如何确保FTP站点访问权限与数据传输安全?  在Oracle关闭情况下如何修改spfile的参数  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  大连网站制作公司哪家好一点,大连买房网站哪个好?  利用JavaScript实现拖拽改变元素大小  如何在 Pandas 中基于一列条件计算另一列的分组均值  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何在云主机上快速搭建网站?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  油猴 教程,油猴搜脚本为什么会网页无法显示?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略