导入市场活动:
js截取字符串:
str.substr(startIndex,length)
str.substr(startIndex) //从下标为startIndex的字符开始截取,截取到字符串的最后
str.substring(startIndex,endIndex)
Mapper:
<insert id="insertActivityByList" parameterType="com.bjpowernode.crm.workbench.domain.Activity">
insert into tbl_activity(id, owner, name, start_date, end_date, cost, description, create_time, create_by)
values
<foreach collection="list" item="obj" separator=",">
(#{obj.id},#{obj.owner},#{obj.name},#{obj.startDate},#{obj.endDate},#{obj.cost},#{obj.description},#{obj.createTime},#{obj.createBy})
</foreach>
</insert>
Controller:
@RequestMapping("/workbench/activity/importActivity.do")
@ResponseBody
public Object importActivity(MultipartFile activityFile,String userName,HttpSession session){
System.out.println("UserName"+userName);
User user = (User) session.getAttribute(Contants.SESSION_USER);
ReturnObject returnObject = new ReturnObject();
try {
//把excel文件写到磁盘目录中
/*String originalFilename = activityFile.getOriginalFilename();
File file = new File("E:\\java\\SSM\\test",originalFilename);
activityFile.transferTo(file);*/
//解析excel文件,获取文件内容,并且封装成activityList对象
//根据excel文件生成HSSFWorkbook对象,封装excel文件的所有信息
// InputStream is = new FileInputStream("E:\\java\\SSM\\" +originalFilename);
//优化:直接内存到内存
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<Activity> activityList = new ArrayList<>();
for(int i = 1;i<=sheet.getLastRowNum();i++){//sheet.getLastRowNum()最后一行的下标
row = sheet.getRow(i);//行下标
activity = new Activity();
activity.setId(UUIDUtils.getUUID());
activity.setOwner(user.getId());
activity.setCreateTime(DateUtils.formatDateTime(new Date()));
activity.setCreateBy(user.getId());
for(int j = 0;j<row.getLastCellNum();j++){//row.getLastCellNum()最后一列的下标+1
//根据row获取HSSFCell对象,封装了一列的所有信息
cell = row.getCell(j);//列的下标
//获取列中的数据
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);
returnObject.setCode(Contants.RETURN_OBJECT_CODE_SUCCESS);
returnObject.setRetData(ret);
} catch (Exception e) {
e.printStackTrace();
returnObject.setCode(Contants.RETURN_OBJECT_CODE_FAIL);
returnObject.setMessage("系统忙,请稍后......");
}
return returnObject;
}
首页:
//给导入按钮添加单击事件:
$("#importActivityBtn").click(function () {
//收集参数
var activityFileName=$("#activityFile").val();
var suffix = activityFileName.substr(activityFileName.lastIndexOf(".")+1).toLocaleLowerCase();
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
contentType:false,//设置ajax向后台提交参数之前,是否把参数统一按urlencoded编码:默认true
type:'post',
dataType:'json',
success:function (data) {
if(data.code=="1"){
//提示成功导入记录条数
alert("成功导入"+data+"条记录");
//关闭模态窗口
$("#importActivityModal").modal("hide");
//刷新市场活动列表,显示第一页数据,保持每页显示条数不变
queryActivityByConditionForPage(1,$("#demo_pag1").bs_pagination('getOption','rowsPerPage'));
}else{
//提示信息
alert(data.message);
//模态窗口不关闭
$("#importActivityModal").modal("show");
}
}
});
});