导入excel2003以及2007多版本自动识别对应工具类(util)
想出了一个工具类,希望对大家有用,导入excel生成对应的行的集合(list),集合里是对应列的Map。原生基于apache的poi类
Ps:之间还遇到了时间和电话号码转型问题,不知道为什么excel明明列设置了文本,但导入来的时候还是识别了数字类型,然后改良了代码,识别时间日期和数字类型返回字符串。
1.首先是导入Excel2003以前(包括2003)的版本,扩展名是.xls 的
-
-
-
-
-
-
-
-
-
publicstaticList<Map<String,String>>readExcelByXls(MultipartFiletempletFile,intstartrow,intstartcol,intsheetnum){
-
List<Map<String,String>>varList=newArrayList<Map<String,String>>();
-
-
try{
-
-
HSSFWorkbookwb=newHSSFWorkbook(templetFile.getInputStream());
-
HSSFSheetsheet=wb.getSheetAt(sheetnum);
-
introwNum=sheet.getLastRowNum()+1;
-
-
for(inti=startrow;i<rowNum;i++){
-
-
Map<String,String>varpd=newHashMap<String,String>();
-
HSSFRowrow=sheet.getRow(i);
-
intcellNum=row.getLastCellNum();
-
-
for(intj=startcol;j<cellNum;j++){
-
-
HSSFCellcell=row.getCell(Integer.parseInt(j+""));
-
StringcellValue=null;
-
if(null!=cell){
-
switch(cell.getCellType()){
-
case0:
-
if(HSSFDateUtil.isCellDateFormatted(cell)){
-
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
-
cellValue=sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())).toString();
-
}else{
-
cell.setCellType(1);
-
cellValue=cell.getStringCellValue();
-
}
-
break;
-
case1:
-
cellValue=cell.getStringCellValue();
-
break;
-
case2:
-
-
-
-
cellValue=String.valueOf(cell.getDateCellValue());
-
break;
-
case3:
-
cellValue="";
-
break;
-
case4:
-
cellValue=String.valueOf(cell.getBooleanCellValue());
-
break;
-
case5:
-
cellValue=String.valueOf(cell.getErrorCellValue());
-
break;
-
}
-
}else{
-
cellValue="";
-
}
-
-
varpd.put("var"+j,cellValue);
-
-
}
-
varList.add(varpd);
-
}
-
-
}catch(Exceptione){
-
System.out.println(e);
-
}
-
-
returnvarList;
-
}
2.是操作Excel2007的版本,扩展名是.xlsx的
-
-
-
-
-
-
-
-
-
publicstaticList<Map<String,String>>readExcelByXlsx(MultipartFiletempletFile,intstartrow,intstartcol,intsheetnum){
-
List<Map<String,String>>varList=newArrayList<Map<String,String>>();
-
-
try{
-
-
XSSFWorkbookwb=newXSSFWorkbook(templetFile.getInputStream());
-
XSSFSheetsheet=wb.getSheetAt(sheetnum);
-
introwNum=sheet.getLastRowNum()+1;
-
-
for(inti=startrow;i<rowNum;i++){
-
-
Map<String,String>varpd=newHashMap<String,String>();
-
XSSFRowrow=sheet.getRow(i);
-
intcellNum=row.getLastCellNum();
-
-
for(intj=startcol;j<cellNum;j++){
-
-
XSSFCellcell=row.getCell(Integer.parseInt(j+""));
-
StringcellValue=null;
-
if(null!=cell){
-
switch(cell.getCellType()){
-
case0:
-
if(HSSFDateUtil.isCellDateFormatted(cell)){
-
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
-
cellValue=sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue())).toString();
-
}else{
-
cell.setCellType(1);
-
cellValue=cell.getStringCellValue();
-
}
-
break;
-
case1:
-
cellValue=cell.getStringCellValue();
-
break;
-
case2:
-
cellValue=cell.getStringCellValue();
-
-
-
break;
-
case3:
-
cellValue="";
-
break;
-
case4:
-
cellValue=String.valueOf(cell.getBooleanCellValue());
-
break;
-
case5:
-
cellValue=String.valueOf(cell.getErrorCellValue());
-
break;
-
}
-
}else{
-
cellValue="";
-
}
-
-
varpd.put("var"+j,cellValue);
-
-
}
-
varList.add(varpd);
-
}
-
-
}catch(Exceptione){
-
System.out.println(e);
-
}
-
-
returnvarList;
-
}
3.重点来了,结合前两个代码使用,自动识别excel版本文件
-
publicstaticList<Map<String,String>>readExcel(MultipartFiletempletFile,intstartrow,intstartcol,intsheetnum){
-
List<Map<String,String>>varList=newArrayList<Map<String,String>>();
-
if(templetFile!=null&&templetFile.getSize()>0){
-
Stringofn=templetFile.getOriginalFilename();
-
StringextName="";
-
if(ofn.lastIndexOf(".")>=0){
-
extName=ofn.substring(ofn.lastIndexOf("."));
-
}
-
if(".xls".equals(extName.toLowerCase())){
-
varList=readExcelByXls(templetFile,startrow,startcol,sheetnum);
-
}elseif(".xlsx".equals(extName.toLowerCase())){
-
varList=readExcelByXlsx(templetFile,startrow,startcol,sheetnum);
-
}
-
}
-
returnvarList;
-
}
分享到:
相关推荐
##### 4.1 ImportExcelUtil.java(Excel解析工具类) ```java package com.poiexcel.util; import java.io.IOException; import java.io.InputStream; import java.text.DecimalFormat; import java.text....
初学者可能一开始接触的工具类并不多,但随着经验的积累和项目的复杂度增加,会发现越来越多的场景需要自定义工具类来解决特定问题。对于描述中提到的"lib2"和"lib1",它们可能是包含第三方库的文件,比如SpringMVC...
本篇文章将详细介绍如何在Spring MVC项目中使用Apache POI库来实现Excel的导入和导出。 Apache POI是Apache软件基金会的一个开源项目,专门用于读写Microsoft Office格式的文件,包括Excel。在Java中,POI提供了API...
Java并发工具类是Java平台提供的一系列用于处理多线程并发问题的类和接口,它们在`java.util.concurrent`包中。并发问题主要包括资源竞争、死锁、活锁以及饥饿等,合理使用并发工具可以有效地提高程序的并发性能并...
此项目是基于springMVC实现的,基本流程为从前台jsp页面使用Ajax文件上传导入excel文件(.xls(97-03)/.xlsx(07以后)),传到后台controller调用相应工具类解析后返回指定参数做后续处理. 1. POIUtil.java工具类 解析...
在 SpringMvc 项目中,POI 可以用来处理 Excel 表数据导入。首先,我们需要在 pom 文件中添加 POI 所需依赖,包括 poi 和 poi-ooxml。然后,在 spring-mvc.xml 配置文件中,我们需要配置文件上传的相关设置,包括...
6. `util`:工具类包,通常包含各种通用的辅助函数和工具类。 综上所述,这个项目可能是一个使用SpringMVC作为后端框架,Bootstrap作为前端UI库的Web应用示例。开发者可以从中学习到如何配置SpringMVC的自动扫描、...
总的来说,"springmvc数据验证jar包"是Java Web开发中的重要工具,它简化了数据验证的过程,提高了代码的可读性和可维护性。通过结合Hibernate Validator的注解驱动验证、JBoss Logging的日志记录以及Validation API...
这个实例提供了详细的源代码,包括SQL脚本,以及一些实用的工具类,使得开发者可以快速理解和学习如何在实际项目中进行这些技术的集成。 首先,SpringMVC是Spring框架的一部分,它是一个模型-视图-控制器(MVC)...
对于现代项目,通常会使用依赖管理工具来自动下载和管理这些库。 2. **配置web.xml**:这是Web应用程序的部署描述符,你需要在这里配置SpringMVC的DispatcherServlet,指定前端控制器如何处理HTTP请求。 3. **创建...
注意,这只是一个基础示例,实际项目中可能需要根据业务需求进行更复杂的逻辑处理,如文件的版本控制、权限管理等。同时,安全性也是必须考虑的,比如防止恶意用户上传大文件导致服务器资源耗尽。
在这个"SpringMVC依赖包"中,包含了多个与 Spring MVC 集成开发密切相关的第三方库。下面我们将逐一探讨这些依赖包的作用及其在 Spring MVC 开发中的重要性。 1. **commons-discovery**:这是一个用于发现服务和...
4. **配置SpringMVC**:创建`web.xml`文件,配置DispatcherServlet以及SpringMVC的初始化参数。 ```xml <servlet-name>dispatcher <servlet-class>org.springframework.web.servlet.DispatcherServlet ...
7. **国际化日期和数字格式**:除了文本外,日期、时间、货币和数字的格式也需要根据地区进行调整,Spring MVC可以配合Java的`java.text.SimpleDateFormat`和`java.util.NumberFormat`进行相应设置。 通过以上步骤...
- Util包:存放一些通用工具类,供项目其他部分使用。 - Vo包:值对象类,用于传递业务层之间的数据。 2. 配置文件说明 项目中包含多种配置文件,各司其职: - persistence.xml:JPA数据源配置文件,通常位于...
5. **Util**: 工具类目录,包含各种辅助类。 6. **WebService**: 存放WebService接口,供外部调用。 配置文件包括: - **applicationContext.xml**: Spring核心配置文件,配置Bean的生命周期管理、事务管理等。 - ...
SSM(Spring、SpringMVC、MyBatis)是一个常见的Java Web开发框架,它整合了Spring的核心 IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)、SpringMVC作为表现层框架以及...
Java版本从1.0开始,经历了多个版本的演进,例如Java 8引入了Lambda表达式和Stream API等新特性。Java的主要特点是其跨平台性,这意味着编写一次Java代码可以在任何安装了Java虚拟机(JVM)的设备上运行。此外,Java...
6. **commons-lang3-3.2.1.jar**:Apache Commons Lang库,提供了大量的Java语言工具类,如字符串操作、数组处理、日期时间处理等,是许多Java项目中的常用依赖。 7. **spring-aop-4.2.4.RELEASE.jar**:Spring的...
在这个例子中,我们使用 `getIpAddress` 方法获取请求主机的 IP 地址,并使用 `IpInterceptUtils` 工具类来判断该 IP 地址是否在黑名单中。如果在黑名单中,我们将返回 `false`,否则,我们将继续执行下一个处理步骤...