前端

//导入excel文件
layui.use('upload', function() {
var upload =layui.upload; //指定允许上传的文件类型
var uploadInst = upload.render({
elem: '#btn_import'
,url: contextPath + "/service/eoms/ordermgt/importExcel.ilf"
,accept: 'file' //普通文件
,done: function(res){
console.log(res);
alert("success");
}
});
});

java controller

//导入excel表格并解析
@RequestMapping(value = "/importExcel.ilf")
@ResponseBody
public JSONObject importExcel(HttpServletRequest request,HttpServletResponse response,MultipartFile file) throws IOException {
String originalFilename = file.getOriginalFilename();
String type = file.getContentType();
//originalFilename = UUID.randomUUID().toString()+originalFilename;
System.out.println("目标文件名称:"+originalFilename+",目标文件类型:"+type); InputStream is = file.getInputStream();
//Workbook createWorkbook = importExcel.createWorkbook(is, type); //
ImportExcel importExcel = new ImportExcel();
List<Object> list= importExcel.importDataFromExcel( is, originalFilename);
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i).toString());
} JSONObject json=new JSONObject(); return json;
}
/**
* @ClassName: ExcelUtil
* @Description: Excel导入工具类
* @date
*/
public class ImportExcel {
private static final Logger logger = Logger.getLogger(ImportExcel.class); /**
* @Title: createWorkbook
* @Description: 判断excel文件后缀名,生成不同的workbook * @param @param is
* @param @param excelFileName
* @param @return
* @param @throws IOException
* @return Workbook
* @throws
*/
public Workbook createWorkbook(InputStream is,String excelFileName) throws IOException{
if (excelFileName.endsWith(".xls")) {
return new HSSFWorkbook(is);
}else if (excelFileName.endsWith(".xlsx")) {
return new XSSFWorkbook(is);
}
return null;
} /**
* @Title: getSheet
* @Description: 根据sheet索引号获取对应的sheet
* @param @param workbook
* @param @param sheetIndex
* @param @return
* @return Sheet
* @throws
*/
public Sheet getSheet(Workbook workbook,int sheetIndex){
return workbook.getSheetAt(0);
} public List<Object> importDataFromExcel(InputStream is,String excelFileName){
List<Object> list = new ArrayList<Object>();
try {
//创建工作簿
Workbook workbook = this.createWorkbook(is, excelFileName);
//创建工作表sheet
Sheet sheet = this.getSheet(workbook, 0);
//获取sheet中数据的行数
int rows = sheet.getPhysicalNumberOfRows();
//获取表头单元格个数
int cells = sheet.getRow(0).getPhysicalNumberOfCells(); for (int i = 1; i < rows; i++) {//第一行为标题栏,从第二行开始取数据 //利用反射,给JavaBean的属性进行赋值
ImportExcelFile vo = new ImportExcelFile();
Field[] fields = vo.getClass().getDeclaredFields(); Row row = sheet.getRow(i);
int index = 0;
while (index < cells) {
Cell cell = row.getCell(index);
if (null == cell) {
cell = row.createCell(index);
}
cell.setCellType(Cell.CELL_TYPE_STRING);
String value = null == cell.getStringCellValue()?"":cell.getStringCellValue(); Field field = fields[index];
String fieldName = field.getName();
String methodName = "set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);
Method setMethod = vo.getClass().getMethod(methodName, new Class[]{String.class});
setMethod.invoke(vo, new Object[]{value});
index++;
}
if (isHasValues(vo)) {//判断对象属性是否有值
list.add(vo);
//vo.getClass().getConstructor(new Class[]{}).newInstance(new Object[]{});//重新创建一个vo对象
} }
} catch (Exception e) {
logger.error(e);
}finally{
try {
is.close();//关闭流
} catch (Exception e2) {
logger.error(e2);
}
}
return list; } /**
* @Title: isHasValues
* @Description: 判断一个对象所有属性是否有值,如果一个属性有值(分空),则返回true
* @param @param object
* @param @return
* @return boolean
* @throws
*/
public boolean isHasValues(Object object){
Field[] fields = object.getClass().getDeclaredFields();
boolean flag = false;
for (int i = 0; i < fields.length; i++) {
String fieldName = fields[i].getName();
String methodName = "get"+fieldName.substring(0, 1).toUpperCase()+fieldName.substring(1);
Method getMethod;
try {
getMethod = object.getClass().getMethod(methodName);
Object obj = getMethod.invoke(object);
if (null != obj && !"".equals(obj)) {
flag = true;
break;
}
} catch (Exception e) {
logger.error(e);
}
}
return flag; }

dao层

package com.inspur.om.order.data;

public class ImportExcelFile {
private String orderId;
private String orderName;
private String orderType;
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
public String getOrderType() {
return orderType;
}
public void setOrderType(String orderType) {
this.orderType = orderType;
}
@Override
public String toString() {
return "ImportExcelFile [orderId=" + orderId + ", orderName="
+ orderName + ", orderType=" + orderType + "]";
} }

最新文章

  1. 0042 MySQL学习笔记-入门--01
  2. MFC覆盖OnPrepareDC实现“所见即所得”打印
  3. JavaScript使用DeviceOne开发实战(一) 配置和起步
  4. Java递归算法——阶乘
  5. Sightseeing(poj 3463)
  6. OS开发网络篇—监测网络状态
  7. HDU 3586 : Information Disturbing
  8. CentOS 下PHP的卸载
  9. asp.net core2.0网站的环境搭建和网站部署
  10. 深度学习系列 Part (2)
  11. tableView//collectionView加载时的动画
  12. springboot整合springdata-jpa
  13. Docker系列10—容器编排工具Docker Compose详解
  14. Jarvis OJ 一些简单的re刷题记录和脚本
  15. 调试JS代码的神器
  16. Python之聚类(KMeans,KMeans++)
  17. DataTables合并单元格(rowspan)的实现思路(多分组分类的情况)
  18. Redis复制与可扩展集群搭建【转】
  19. 愿Linux红帽旋风吹得更加猛烈吧!
  20. Sencha Cmd 5.0.1.231 是坑爹货

热门文章

  1. 使用 ReentrantLock 和 Condition 实现一个阻塞队列
  2. HTML 常用小技巧 【标题图标】【锚点】【插入音乐,视频】【滚动效果】【嵌入网页】
  3. weex stream 之fetch的get、post获取Json数据
  4. springboot自定义banner生成器
  5. 什么是Solr
  6. 使用git将本地仓库同步到github远程仓库
  7. css优化,提高性能
  8. 华中农业大学第五届程序设计大赛网络同步赛-A
  9. 集合框架三(List和Set的补充(不加泛型))
  10. 一些css属性的理解和运用。