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


相关推荐: lovemo网页版地址 lovemo官网手机登录  如何快速生成凡客建站的专业级图册?  Laravel如何自定义分页视图?(Pagination示例)  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  如何在阿里云完成域名注册与建站?  中山网站推广排名,中山信息港登录入口?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  制作企业网站建设方案,怎样建设一个公司网站?  如何快速搭建FTP站点实现文件共享?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  动图在线制作网站有哪些,滑动动图图集怎么做?  Laravel怎么实现模型属性的自动加密  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  网站图片在线制作软件,怎么在图片上做链接?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  中国移动官方网站首页入口 中国移动官网网页登录  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  如何在IIS7上新建站点并设置安全权限?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  浅谈javascript alert和confirm的美化  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Python文件异常处理策略_健壮性说明【指导】  javascript中的try catch异常捕获机制用法分析  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Laravel如何配置和使用缓存?(Redis代码示例)  Python3.6正式版新特性预览  PHP正则匹配日期和时间(时间戳转换)的实例代码  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  JS去除重复并统计数量的实现方法  如何解决hover在ie6中的兼容性问题  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel Docker环境搭建教程_Laravel Sail使用指南  iOS中将个别页面强制横屏其他页面竖屏  电商网站制作价格怎么算,网上拍卖流程以及规则?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何快速搭建高效WAP手机网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局