//首先文件上传
uploader = WebUploader.create({
swf: "/js/webuploader/Uploader.swf",
server: "/admin/file/uploadImg",
pick: "#readExcel",
auto: true,
sendAsBinary:false,//指明使用二进制的方式上传文件
resize: false,
duplicate: true,//解决重复上传问题
accept: {
title: "上传文件",
extensions: "xls",
mimeTypes: "excel/xls"
}
});
//监听文件上传成功
uploader.on("uploadSuccess", function(file, json) {
location.href="/admin/duty/readExcel?url="+json.url;
});
//然后获取数据进行存储数据库
@RequestMapping(value = "/readExcel")
public String readExcel(Model model,String url){
//获取到表格路径
//读取表格数据
String realPath = this.getRequest().getSession().getServletContext().getRealPath(url);
List<List<String>> list=this.readFromFile(realPath);
//解析数据存入数据库
for(int i=0;i<list.size();i++){
if(i>1){
Duty duty=new Duty();
duty.setAddTime(new Date());
duty.setCreateTime(list.get(i).get(0));
if(list.get(i).get(1).contains("(")){
Integer first=list.get(i).get(1).indexOf("(");
duty.setWeek("星期"+list.get(i).get(1).substring(0, first));
duty.setRemark(list.get(i).get(1).substring(first+1,list.get(i).get(1).length()-1));
}else{
duty.setWeek("星期"+list.get(i).get(1));
}
duty.setLeadName(list.get(i).get(2));
duty.setWatchName(list.get(i).get(3));
duty.setShootingName(list.get(i).get(4));
if(list.get(i).get(0)!=null&&list.get(i).get(0).contains("-")){
dutyService.add(duty);
}
}
}
//重定向到list页面
return "redirect:/admin/duty/list";
}
public List<List<String>> readFromFile(String url){
File file = new File(url);
StringBuffer sb = new StringBuffer();
List<List<String>> list=new ArrayList< List<String>>();
try {
Workbook book = Workbook.getWorkbook(file);
try{
Sheet sheet = book.getSheet(0);
for(int i = 0 ; i < 36 ; i++){
List<String> list1=new ArrayList<String>();
for(int j = 0 ; j < 5; j++){
//第一个参数代表列,第二个参数代表行。(默认起始值都为0)
sb.append(sheet.getCell(j, i).getContents()+"\t");
list1.add(sheet.getCell(j, i).getContents());
}
list.add(list1);
sb.append("\n");
}
}finally{
if(book != null){
book.close();
}
}
} catch (BiffException e) {
System.err.println(e+"");
} catch (IOException e) {
System.err.println(e+"文件读取错误");
}
return list;
}