java中jxl将excel中的数据导入到数据库中

首先前台实现:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值