首先前台实现:
function _import(trainingClassId){
var tableForm = document.getElementById("jvForm");
tableForm.action="${base}/trainingclass_user/inner/o_import.jspx";
$("input[name=trainingClassId]").val(trainingClassId);
tableForm.οnsubmit=null;
tableForm.submit();
}
<form id="jvForm" method="post" enctype="multipart/form-data">
<a href="javascript:_import(${trainingClassId});"><input type="file" name="attachment" accept=".xls"/>导入</a>
</form>
后台实现:(这里后台基于spring框架的)
1,先写实体类:
package com.westi.cms.entity.back.base;
import java.io.File;
import java.io.Serializable;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
public abstract class BaseCmsFormFile implements Serializable{
// constructors
public BaseCmsFormFile(){
initialize();
}
protected void initialize() {
}
private CommonsMultipartFile attachment;// 实际上传文件 //主要属性
private String uploadContentType; // 文件的内容类型
private String uploadFileName; // 上传文件名
public CommonsMultipartFile getAttachment() {
return attachment;
}
public void setAttachment(CommonsMultipartFile attachment) {
this.attachment = attachment;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String toString() {
return super.toString();
}
}
//这里只是一个实体类,由于这里项目规范写有继承关系,本来可以写成一个类就行
package com.westi.cms.entity.back;
import com.westi.cms.entity.back.base.BaseCmsFormFile;
public class CmsFormFile extends BaseCmsFormFile{
/**
*
*/
private static final long serialVersionUID = 1L;
public CmsFormFile() {
super();
}
}
2.在spring配置文件中声明此类
<bean id="userfile" class="com.westi.cms.entity.back.CmsFormFile"/>
3,编写业务逻辑:(接收前台请求)
@RequestMapping("/trainingclass_user/inner/o_import.jspx")
public String trainingclass_user_inner_super_import(Integer trainingClassId,CmsFormFile file, HttpServletRequest request, HttpServletResponse response, ModelMap model) {
CmsSite site = CmsUtils.getSite(request);
FrontUtils.frontData(request, model, site);
try {
InputStream stream=file.getAttachment().getInputStream();
Workbook wk=Workbook.getWorkbook(stream);
Sheet s[]=wk.getSheets();
Boolean isexist=true;
for (int i = 0; i < s.length; i++) {
for (int j = 1; j < s[i].getRows(); j++) {
CmsUser user=cmsUserMng.findByUsername(s[i].getCell(0, j).getContents());//与数据库交互代码
List<CmsTrainingClassUser> list=trainingClassUserMng.getList(trainingClassId, user.getId()); if (list.size()<1) {
isexist=false; //将要更新的数据中用户是否已存在于CmsTrainingClassUser中的标志
}
}
}
if (isexist) {
for (int i = 0; i < s.length; i++) {
if (s[i]!=null) {
for (int j = 1; j < s[i].getRows(); j++) { //第一行为列头
CmsUser user=cmsUserMng.findByUsername(s[i].getCell(0, j).getContents());
System.out.println(trainingClassId+"--"+user.getId());
CmsTrainingClassUser bean=trainingClassUserMng.getList(trainingClassId, user.getId()).get(0);
bean.setTimes(Integer.parseInt(s[i].getCell(1, j).getContents()));
bean.setStatus(Integer.parseInt(s[i].getCell(2, j).getContents()));
trainingClassUserMng.update(bean);
}
} //if
model.addAttribute("message", "导入成功!");
}//for
}//if
else {
model.addAttribute("message", "导入失败!");
}
} catch (Exception e) {
if (file.getAttachment().isEmpty()) {
model.addAttribute("message", "请添加导入文件!");
}
}
return trainingclass_user_inner_super_list(trainingClassId, null, request, response, model);
}
之前写了 java中jxl将数据库中的数据导入到excel中 大家可以参考看
http://blog.csdn.net/zml1991105/article/details/52291285