
pom.xml
commons-io commons-io commons-fileupload commons-fileupload commons-lang commons-lang org.apache.poi poi 3.15 
在springmvc.xml中插入语句,限制导入大小
@RequestMapping("/workbench/activity/importActivity.do") public @ResponseBody Object importActivity(MultipartFile activityFile, String userName, HttpSession session){ System.out.println("userName="+userName); User user=(User) session.getAttribute("sessionUser"); ReturnObject returnObject=new ReturnObject(); try { InputStream is=activityFile.getInputStream(); HSSFWorkbook wb=new HSSFWorkbook(is); //根据wb获取HSSFSheet对象,封装了一页的所有信息 HSSFSheet sheet=wb.getSheetAt(0);//页的下标,下标从0开始,依次增加 //根据sheet获取HSSFRow对象,封装了一行的所有信息 HSSFRow row=null; HSSFCell cell=null; Activity activity=null; List activityList=new ArrayList<>(); for(int i=1;i<=sheet.getLastRowNum();i++) {//sheet.getLastRowNum():最后一行的下标 row=sheet.getRow(i);//行的下标,下标从0开始,依次增加 activity=new Activity(); activity.setId(UUIDUtils.getUUID()); activity.setOwner("2"); // 设置人 activity.setCreateTime(DateUtils.formateDateTime(new Date())); activity.setCreateBy("2"); // 设置创造人 for(int j=0;j//row.getLastCellNum():最后一列的下标+1 //根据row获取HSSFCell对象,封装了一列的所有信息 cell=row.getCell(j);//列的下标,下标从0开始,依次增加 //获取列中的数据 String cellValue= HSSFUtils.getCellValueForStr(cell); if(j==0){ activity.setName(cellValue); }else if(j==1){ activity.setStartDate(cellValue); }else if(j==2){ activity.setEndDate(cellValue); }else if(j==3){ activity.setCost(cellValue); }else if(j==4){ activity.setDescription(cellValue); } } //每一行中所有列都封装完成之后,把activity保存到list中 activityList.add(activity); } //调用service层方法,保存市场活动,这里就不多说了 int ret=activityService.saveCreateActivityByList(activityList); // 这里设置一下code,传输给前端 returnObject.setCode("1"); // 设置数据 returnObject.setRetData(ret); }catch (Exception e){ e.printStackTrace(); returnObject.setCode("0"); returnObject.setMessage("系统忙,请稍后重试...."); } return returnObject; } 获取随机ID
public class UUIDUtils { public static String getUUID(){ return UUID.randomUUID().toString().replaceAll("-",""); } } 获取当前时间
import java.text.SimpleDateFormat; import java.util.Date; public class DateUtils { /** * 对指定的date对象进行格式化: yyyy-MM-dd HH:mm:ss * @param date * @return */ public static String formateDateTime(Date date){ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr=sdf.format(date); return dateStr; } /** * 对指定的date对象进行格式化: yyyy-MM-dd * @param date * @return */ public static String formateDate(Date date){ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String dateStr=sdf.format(date); return dateStr; } /** * 对指定的date对象进行格式化: HH:mm:ss * @param date * @return */ public static String formateTime(Date date){ SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss"); String dateStr=sdf.format(date); return dateStr; } } HSSFUtils.java:关于excel文件操作的工具类
import org.apache.poi.hssf.usermodel.HSSFCell; /** * 关于excel文件操作的工具类 */ public class HSSFUtils { /** * 从指定的HSSFCell对象中获取列的值 * @return */ public static String getCellValueForStr(HSSFCell cell){ String ret=""; if(cell.getCellType()==HSSFCell.CELL_TYPE_STRING){ ret=cell.getStringCellValue(); }else if(cell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){ ret=cell.getNumericCellValue()+""; }else if(cell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){ ret=cell.getBooleanCellValue()+""; }else if(cell.getCellType()==HSSFCell.CELL_TYPE_FORMULA){ ret=cell.getCellFormula(); }else{ ret=""; } return ret; } } 前端的设计代码:
//给"导入"按钮添加单击事件 $("#importActivityBtn").click(function () { //收集参数 var activityFileName=$("#activityFile").val(); var suffix=activityFileName.substr(activityFileName.lastIndexOf(".")+1).toLocaleLowerCase();//xls,XLS,Xls,xLs,.... if(suffix!="xls"){ alert("只支持xls文件"); return; } var activityFile=$("#activityFile")[0].files[0]; if(activityFile.size>5*1024*1024){ alert("文件大小不超过5MB"); return; } //FormData是ajax提供的接口,可以模拟键值对向后台提交参数; //FormData最大的优势是不但能提交文本数据,还能提交二进制数据 var formData=new FormData(); formData.append("activityFile",activityFile); formData.append("userName","张三"); //发送请求 $.ajax({ url:'workbench/activity/importActivity.do', data:formData, processData:false,//设置ajax向后台提交参数之前,是否把参数统一转换成字符串:true--是,false--不是,默认是true contentType:false,//设置ajax向后台提交参数之前,是否把所有的参数统一按urlencoded编码:true--是,false--不是,默认是true type:'post', dataType:'json', success:function (data) { if(data.code=="1"){ //提示成功导入记录条数 alert("成功导入"+data.retData+"条记录"); // 自己设置展示 }else{ //提示信息 alert(data.message); } } }); }); // 导出 @RequestMapping("/workbench/activity/exportAllActivitys.do") public void exportAllActivitys(HttpServletResponse response) throws Exception{ //调用service层方法,查询所有的市场活动,不多说什么,这是基础 List activityList=activityService.queryAllActivitys(); //创建exel文件,并且把activityList写入到excel文件中 HSSFWorkbook wb=new HSSFWorkbook(); HSSFSheet sheet=wb.createSheet("市场活动列表"); HSSFRow row=sheet.createRow(0); HSSFCell cell=row.createCell(0); cell.setCellValue("ID"); cell=row.createCell(1); cell.setCellValue("所有者"); cell=row.createCell(2); cell.setCellValue("名称"); cell=row.createCell(3); cell.setCellValue("开始日期"); cell=row.createCell(4); cell.setCellValue("结束日期"); cell=row.createCell(5); cell.setCellValue("成本"); cell=row.createCell(6); cell.setCellValue("描述"); cell=row.createCell(7); cell.setCellValue("创建时间"); cell=row.createCell(8); cell.setCellValue("创建者"); cell=row.createCell(9); cell.setCellValue("修改时间"); cell=row.createCell(10); cell.setCellValue("修改者"); //遍历activityList,创建HSSFRow对象,生成所有的数据行 if(activityList!=null && activityList.size()>0){ Activity activity=null; for(int i=0;i activity=activityList.get(i); //每遍历出一个activity,生成一行 row=sheet.createRow(i+1); //每一行创建11列,每一列的数据从activity中获取 cell=row.createCell(0); cell.setCellValue(activity.getId()); cell=row.createCell(1); cell.setCellValue(activity.getOwner()); cell=row.createCell(2); cell.setCellValue(activity.getName()); cell=row.createCell(3); cell.setCellValue(activity.getStartDate()); cell=row.createCell(4); cell.setCellValue(activity.getEndDate()); cell=row.createCell(5); cell.setCellValue(activity.getCost()); cell=row.createCell(6); cell.setCellValue(activity.getDescription()); cell=row.createCell(7); cell.setCellValue(activity.getCreateTime()); cell=row.createCell(8); cell.setCellValue(activity.getCreateBy()); cell=row.createCell(9); cell.setCellValue(activity.getEditTime()); cell=row.createCell(10); cell.setCellValue(activity.getEditBy()); } } //把生成的excel文件下载到客户端 response.setContentType("application/octet-stream;charset=UTF-8"); response.addHeader("Content-Disposition","attachment;filename=activityList.xls"); OutputStream out=response.getOutputStream(); wb.write(out); wb.close(); out.flush(); } 前端代码:
//给"批量导出"按钮添加单击事件 $("#exportActivityAllBtn").click(function () { //发送同步请求 window.location.href="workbench/activity/exportAllActivitys.do"; }); 
下载

上传



无法精准判断每一列对应的数据,必须以一个固定的表规范才能使用
无