如果你对里面的代码不熟悉不知道的话,建议先浏览一遍代码再拿去用,
这里我介绍一下这个过程的思路:
1、定义变量那些就不说了 ,
2、首先是上传文件并保存的代码
3、根据excel表的路径来读取文件,之后便是先获取最大行数和最大列数,然后根据最大行数和最大列数来循环表格。循环行的过程中循环列,获取到一行中所有的列数据再对数据进行处理,根据需求给每一个列的数据分配一个名字,也是k-y,然后再进行存储。
!!反正代码下面,不懂可以私信,或者自己打断点调试,看两遍就会理解里面的内容了
@RequestMapping(value = "/ImportExcel")
@ResponseBody
public JSONObject ImportExcel(@RequestParam(value = "file", required = false) MultipartFile file) throws Exception {
//这里创建json对象,实测用map的话,json数据会有问题
JSONObject jsonMap = new JSONObject();
Sheet sheet = null; //excel的表
Row row = null; //行
String cellData = null; //列数据
//以上是定义一些要用的变量==========================================================
//讲选择的文件上传到upload目录
String fileName = file.getOriginalFilename();
// 获取上传目录的路径
String path = request.getRealPath("/upload");// 获取上传文件路径
String prefix = fileName.substring(fileName
.lastIndexOf('.') + 1);// 获取文件后缀名
Date time = new Date();
String filename = time.getYear() + "" + time.getMonth() + ""
+ time.getDay() + "" + time.getHours() + "" + time.getMinutes()
+ "" + time.getSeconds() + "";
File targetFile = new File(path, filename + "."
+ prefix);
//保存文件
file.transferTo(targetFile);
//以上先上传并把文件保存到服务器==========================================================
// 获取上传目录的路径
Workbook wb =EXCELBean.readExcel(path+"\\"+filename + "." + prefix);
if(wb != null){
//用来存放表中一行的数据
List<JSONObject> listMap = new ArrayList<JSONObject>();
//获取第一个sheet
sheet = wb.getSheetAt(0);
//获取最大行数
int rownum = sheet.getPhysicalNumberOfRows();
//获取第一行
row = sheet.getRow(0);
//获取最大列数
int colnum = row.getPhysicalNumberOfCells();
//循环行
for (int i = 1; i < rownum; i++) {
row = sheet.getRow(i);
if(row !=null){
//创建list对象接收读出的excel一行中列的数据
List<String> list = new ArrayList<String>();
//循环列
for (int j=0;j<colnum;j++){
cellData = (String) EXCELBean.getCellFormatValue(row.getCell(j));
list.add(cellData);
}
//这里可以定义多个JSONObject来对数据进行处理嵌套等操作,最后再储存到listMap中,
JSONObject jsonObject2 = new JSONObject();
jsonObject2.put("skvDorCode0",list.get(0));
jsonObject2.put("skvDorCode1",list.get(1));
jsonObject2.put("skvDorCode2",list.get(2));
jsonObject2.put("skvDorCode3",list.get(3));
jsonObject2.put("skvDorCode4",list.get(4));
jsonObject2.put("skvDorCode5",list.get(5));
/*//创建jsonBmt对象,进一步把以上对象嵌套
JSONObject jsonBmt = new JSONObject();
//把以上几个嵌套入第一层对象中
jsonObject2.put("businessMixTypes",jsonBmt); */
listMap.add(jsonObject2);
}else{
break;
}
}// end for row
//最外层加个key-gridData
jsonMap.put("msg", "上传数据成功");
jsonMap.put("gridData", listMap);
System.out.println(jsonMap);
return jsonMap;
}
jsonMap.put("msg", "上传数据为空");
return jsonMap;
}