项目期间有Excel文件导入 今天来整理一下
1. 首先在web页面添加一个button按钮 “导入Excel”
注意: input 的类型必须是file才可以 name=“fileData”的名字要和后台的属性一致
2. html页面:
$(function() {
$("#inputExcel").change(function(){
initProvince();
// 获得文件
var file = $("#inputExcel").val();
// 截取上传的文件后缀
var extension = file.substring(file.lastIndexOf("."),file.length);
// 验证上传文件后缀是否合法
var strRegex = "(.xls|.xlsx)$";
var re = new RegExp(strRegex);
var flag;
// 如果不合法,在页面上显示出相应的提示消息
if (!re.test(extension.toLowerCase())) {
layer.msg('文件名不合法,请上传Excel文件!', {
icon : 2
});
return false;
}
if(extension == ".xls"){
flag = 0;
}
if(extension == ".xlsx"){
flag = 1;
}
var parms = new Object();
// Excel版本flag
parms["flag"] = flag;
//如果你用不到以下参数的话就可以不用写
parms["provinceNames"] = JSON.stringify(provinceNames);
//parms["areaNames"] = JSON.stringify(areaNames);
var options = {
//这个url是后台的接口网址
url: ctx+'/organ/inputExcel.do?t=' + getNowDate(),
type: "post",
data: parms,
dataType: "json",
success: function (result) {
var json = eval(result);
if (json[Cons.RESULT] == Cons.SUCCESS) {
layer.msg('导入成功!', {
icon : 1
});
}else if(json[Cons.RESULT] == null){
layer.msg(json[Cons.RESULT_MSG], {
icon : 2
});
}else if(json[Cons.RESULT] == "codeDuplication"){
layer.msg(json[Cons.RESULT_MSG], {
icon : 2
});
}else if(json[Cons.RESULT] == "telError"){
layer.msg(json[Cons.RESULT_MSG], {
icon : 2
});
}else if(json[Cons.RESULT] == "provinceError"){
layer.msg(json[Cons.RESULT_MSG], {
icon : 2
});
}else {
layer.msg('导入失败!', {
icon : 2
});
}
setTimeout('window.location.reload()',2000);
}
};
$("#form1").ajaxSubmit(options);
});
});
3. controller: 用来读取excel文件将数据保存到数据中
@SuppressWarnings({ "deprecation", "unchecked" })
@RequestMapping(value = "/inputExcel", method=RequestMethod.POST)
public void upload(@RequestParam(value="fileData", required=false) MultipartFile file ,
@RequestParam("flag")String flag,
HttpServletRequest request, HttpServletResponse response)throws Exception {
Map<String, Object> resMap = new HashMap<String, Object>();
// 文件转换成输入流
FileInputStream fis=(FileInputStream) file.getInputStream();
String provinceNames = request.getParameter("provinceNames");
JSONArray provinceNamesJson=JSONArray.fromObject(provinceNames);
// 获取系统当前服务id
ServiceAdapter adapter = ServiceAdapter.getInstance();
String serviceID = adapter.getServiceId();
DecimalFormat df = new DecimalFormat("#");
if("0".equals(flag)){
// 创建xls工作薄
HSSFWorkbook workbook = null;
try {
workbook = new HSSFWorkbook(fis);
} catch (IOException e1) {
e1.printStackTrace();
}
// 得到工作表
HSSFSheet sheet = workbook.getSheetAt(0);
// 对应Excel的行
HSSFRow row = null;
// 得到Excel的总行数
int totalRows = sheet.getLastRowNum();
for (int i = 1; i <= totalRows; i++) {
row = sheet.getRow(i);
//这个实体是你需要导入的文件的实体
SysOrgan organ =new SysOrgan();