注释:
可在action直接调用该工具类,可传入file或文件路径,支持指定路径文件,和指定物理文件的excel。
工具类会返回一个List对象,拿到该对象后则是业务处理部分,比如:转换为业务对象的pojo,数据校验,迭代插入db等。业务部分代码就不做阐述了。通用部分请看一下代码。
调用工具类:
public class uploadDemo {
/**
* @param args
*/
public static void main(String[] args) {
List list = ExcelUpLoadUtil.excelUpLoad(null, "d:/test.xls");
System.out.println(list.size());
System.exit(0);
}
}
工具类:
package com.jala.ccs.common;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
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.ss.usermodel.Workbook;
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;
public class ExcelUpLoadUtil {
private static final Log log = LogFactory.getLog(ExcelUpLoadUtil.class);
/**
* excel文件导入
* 该方法在传统方法加以修改,支持不同版本导入,最终返回一个list集合,集合中封装的是object数组,然后根据业务需要封装自己想要的pojo对象。
* 该方法支持指定服务端文件路径上传和客户端上传,如果是服务端指定路径上传则file赋值null,反之,则filePaht赋值null
* 前端页面代码以下4行
* <form action="upload" enctype="multipart/form-data">
* <input type="file" name="myFile" />
* <input type="submit" value="Upload! " />
* </form>
* springMvc action 中使用以下代码,以下两行
* MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request;
* MultipartFile file = mulRequest.getFile("excel");
* @param file
* @param filePath "d:/test.xls";
* @return
*/
public static List excelUpLoad(File f,String filePath){
List list=null;//返回对象
if(null==f && (null==filePath || "".equals(filePath))){
log.error("导入excel,发现无效的参数,无法执行!");
return null;
}
File file = f;
if(null!=filePath && !"".equals(filePath)){//已指定文件路径
file = new File(filePath);
}
String filename = file.getName();
if (filename == null || "".equals(filename)){
log.error("导入excel,文件不存在!");
}
try {
InputStream input = new FileInputStream(file);
Workbook workBook = null;
//以下做法是为了区分不同版本,然后使用XSSF或HSSF
String flag="";//XSSF或HSSF的标记
try {
workBook = new XSSFWorkbook(input);
flag="XSSF";
} catch (Exception ex) {
workBook = new HSSFWorkbook(new FileInputStream(file));
flag="HSSF";
}
//根据标记使用不同的方法来解析excel
if("XSSF".equals(flag)){
XSSFSheet sheet = (XSSFSheet) workBook.getSheetAt(0);
if (sheet != null)
{ //list
list = new ArrayList();
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++)
{ //object
XSSFRow row = sheet.getRow(i);
Object[] obj = new Object[row.getPhysicalNumberOfCells()];
for (int j = 0; j < row.getPhysicalNumberOfCells(); j++)
{ //column
XSSFCell cell = row.getCell(j);
String cellStr = cell.toString();
log.info("【"+cellStr+"】 ");
obj[j] = cellStr;
}
System.out.println();
list.add(obj);
}
log.info("当前excel总条数"+list.size());
}
}else if ("HSSF".equals(flag)){
HSSFSheet sheet = (HSSFSheet) workBook.getSheetAt(0);
if (sheet != null)
{ //list
list = new ArrayList();
for (int i = 1; i < sheet.getPhysicalNumberOfRows(); i++)
{ //object
HSSFRow row = sheet.getRow(i);
Object[] obj = new Object[row.getPhysicalNumberOfCells()];
for (int j = 0; j < row.getPhysicalNumberOfCells(); j++)
{ //column
HSSFCell cell = row.getCell(j);
String cellStr = cell.toString();
log.info("【"+cellStr+"】 ");
obj[j] = cellStr;
}
System.out.println();
list.add(obj);
}
log.info("当前excel总条数"+list.size());
}
}else{
log.error("导入excel,发生未知错误!");
}
}
catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
相关推荐
java导入excel的工具类。支持单个对象的赋值,列表对象的赋值,指定坐标的赋值。主要利用的是poi的技术,java反射和自定义注解
java导入excel的工具类。支持单个对象的赋值,列表对象的赋值,指定坐标的赋值。主要利用的是poi的技术,java反射和自定义注解。 20170915,解决了不能导入带有公式字段的excel的问题
主要给大家介绍了关于在java poi导入Excel通用工具类的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
利用poi导入导出Excel xls,xlsx
java poi excel 模板导入通用工具类,支持 2003/2007 版excel 详细看里面的README.md
SpringBoot整合poi实现Excel文件的导入和导出,其中单独分装出一个ExcelFormatUtil工具类来实现对单元格数据格式进行判断。
poi通过反射,泛型,注解来实现通用的poi导出导入公共类。
一个excel导入/导出的demo 用到Apache的poi相关接口。 利用注解及反射实现。 在建立pojo时利用自定义的@Excel注解来映射excel列名。
开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子,下面介绍下“轮子”的使用。
POI可以实现Word,Exce的导入导出。可以进行jxl的升级,来解决版本低的问题。
只实现了简单的excel导入导出,不支持特殊模版的定义。...1、poi-excel 基本操作(工具) 2、自定义注解的使用 3、全局异常捕获的定义 4、jkd1.8新特性:Lambda 表达式 、函数式接口 等等 5、统一出参包装类 6、lombok
网上很多使用poi 操作excel的文章!但是没有公用的方法 !目前的程序使用策略设计模式的方法封装了一个工具类!excel的导入就一个工具类搞定!(商品导入,订单导入,等等就增加配置文件不需要写任何的程序就搞定)
poi excel导入导出通用工具类,包括导入时的文件类型判断,导入时单元格数据类型的判断和校验,导出时根据提供的字段和集合,通过反射的方式将数据写入到excel中然后导出
此项目是基于springMVC实现的,基本流程为从前台jsp页面使用Ajax文件上传导入excel文件(.xls(97-03)/.xlsx(07以后)),传到后台controller调用相应工具类解析后返回指定参数做后续处理. 1. POIUtil.java工具类 解析...