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优化双核驱动策略

