html页面代码如下:
<div style="" >
<span>批量上传:</span>
<span>
<input type="file" id="importFile" name="importFile" />
<button class="btn btn-success" type="button" οnclick="impExcel()">确认上传</button>
</span>
</div>
JS前台代码如下:
function impExcel(){
var fileName = $("#importFile").val();
if(fileName != "") {
//获得选择的上传文件的后缀名的正则表达式
var suffix = fileName.match(/\..{3,4}$/)[0].substring(1).toLowerCase();
if(suffix == "xls" || suffix == "xlsx") { //&& suffix != "xlsx") {
//alert("只能上传excel文件!");
//return;
alert(111);
$.ajaxFileUpload({
url:'/ODSMSPortlet/questionF/questionSysF!importExcel.action?random='+Math.random(),//用于文件上传的服务器端请求地址
type: 'post',
secureuri : false,//一般设置为false
fileElementId : 'importFile',
dataType : 'json',//返回值类型 一般设置为json
success : function() //服务器成功响应处理函数
{
//alert("上传成功");
self.location.href = "/ODSMSPortlet/questionF/questionSysF!toQueryLimitPerson.action?sysMenuId=102737";
},
error: function (data, status, e)//服务器响应失败处理函数
{
//alert("上传失败");
self.location.href = "/ODSMSPortlet/questionF/questionSysF!toQueryLimitPerson.action?sysMenuId=102737";
}
});
}else{
alert("只能上传excel文件!")
}
} else {
alert("请选择要导入的文件!");
}
}
后端使用structs处理如下:
/**
* 导入Excel数据,批量添加到权限表
*/
public void importExcel(){
setDataObject();
try {
IDataObject ido = this.getDataObject();
MultiPartRequestWrapper multipartRequest =(MultiPartRequestWrapper)request;
File file = multipartRequest.getFiles("importFile")[0]; //"importFile"为上文件ID
FileInputStream inputStream = new FileInputStream(file);
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
HSSFSheet sheet = workbook.getSheetAt(0);// 取出第一个工作表,索引是0
int x = sheet.getLastRowNum();
System.out.println(x);
String cellStr = null;// 单元格,最终按字符串处理
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
String staffId = "";
String staffName = "";
String limitId ="";
HSSFRow row = sheet.getRow(i);// 获取行对象
if (row == null) {
break;
//throw new Exception("行为空");
}
//暂时限定Excel必须满足一定的格式,例如:只有三列,且第一列为员工号,第二列为员工姓名,第三列为权限(0、1、2)
//根据约定的规则读取Excel中相应单元格对象并做插入处理
for(int j = 0; j < row.getLastCellNum(); j++) {
HSSFCell cell = row.getCell(j);// 获取单元格对象
if (cell == null) {// 单元格为空设置cellStr为空串
// cellStr = "";
throw new Exception("列为空");
}else{
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
}
cellStr = cell.getStringCellValue();
//对前三列进行处理
if(j==0){
staffId = cellStr;
}else if(j==1){
staffName = cellStr;
}else{
limitId =cellStr;
}
}
System.out.println(staffId +" "+staffName+" "+limitId);
ido.addInput("staffId", staffId);
ido.addInput("staffName", staffName);
ido.addInput("limitId", limitId);
dhlCommonService.insert("questionSysF.insertPerson", ido);
}
dto.setOutput("true");
this.flushDataObject(dto);
} catch (Exception e) {
e.printStackTrace();
dto.setOutput("false");
this.flushDataObject(dto);
}
}