html
---------------------------------------------------------------------------
<el-upload
:show-file-list="false"
ref="upload"
name="excelFile"
:action="uploadUrl"
:on-change="handleChange"
:on-success = "successMethod"
accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
:auto-upload="true"
>
<el-button size="mini" class="button" @click="submitUpload" style="margin-left:10px">导入</el-button>
</el-upload>
---------------------------------------------------------------------------
js
---------------------------------------------------------------------------
handleChange(file, fileList) {
console.log("---");
this.tableData = [];
this.totalCount = 0;
this.importfxx(file.raw);
},
importfxx(obj) {
let _this = this;
let inputDOM = this.$refs.inputer;
// 通过DOM取文件数据
console.log(event.currentTarget);
console.log(event.currentTarget.files);
if(event.currentTarget.files == undefined){
return;
}
this.file = event.currentTarget.files[0];
var rABS = false; //是否将文件读取为二进制字符串
var f = this.file;
var reader = new FileReader();
//if (!FileReader.prototype.readAsBinaryString) {
FileReader.prototype.readAsBinaryString = function (f) {
var binary = "";
var rABS = false; //是否将文件读取为二进制字符串
var pt = this;
var wb; //读取完成的数据
var outdata;
var reader = new FileReader();
reader.onload = function (e) {
var bytes = new Uint8Array(reader.result);
var length = bytes.byteLength;
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
var XLSX = require("xlsx");
if (rABS) {
wb = XLSX.read(btoa(fixdata(binary)), {
//手动转化
type: "base64",
});
} else {
wb = XLSX.read(binary, {
type: "binary",
});
}
wb.Sheets[wb.SheetNames[0]].A1 = { t: "n", v: "工号", w: "USERID" };
wb.Sheets[wb.SheetNames[0]].B1 = { t: "s", v: "姓名", w: "USERNAME" };
wb.Sheets[wb.SheetNames[0]].C1 = {
t: "s",
v: "职称",
w: "PROFESSIONAL",
};
wb.Sheets[wb.SheetNames[0]].D1 = { t: "s", v: "科室", w: "DEPTNAME" };
wb.Sheets[wb.SheetNames[0]].E1 = { t: "s", v: "角色", w: "ROLE" };
wb.Sheets[wb.SheetNames[0]].F1 = {
t: "s",
v: "入职日期",
w: "INDATE",
};
outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]); //outdata就是你想要的东西
var newList = [];
var newListMore = [];
var msg = "";
for (var index in outdata) {
console.log(!outdata[index].PROFESSIONAL);
if (newList.indexOf(outdata[index].USERID) < 0) {
newList.push(outdata[index].USERID);
//----判断数据是否有空值
// if((!outdata[index].USERID)||(!outdata[index].USERNAME)||(!outdata[index].PROFESSIONAL)||(!outdata[index].DEPTNAME)||(!outdata[index].ROLE)||(!outdata[index].INDATE)){
// _this.$alert("有数据未填写完整", "数据异常!", {
// dangerouslyUseHTMLString: true,
// });
// return;
// }
} else {
var indexs = index;
indexs++;
newListMore.push(outdata[index].USERID);
msg +=
"<b><p>" +
"第" +
indexs +
"行-工号:" +
outdata[index].USERID +
"</p></b>";
}
}
console.log(msg);
if (msg == "") {
_this.$alert(msg, "工号重复,请修改!", {
dangerouslyUseHTMLString: true,
});
return;
} else {
_this.totalCount = outdata.length;
_this.pageSize = outdata.length;
}
this.da = [...outdata];
let arr = [];
console.log(outdata);
// _this.tableData = outdata;
this.da.map((v) => {
let obj = {};
obj.id = v.id;
obj.status = v.status;
arr.push(obj);
});
let para = {
//withList: JSON.stringify(this.da)
withList: arr,
};
// _this.$message({
// message: "请耐心等待导入成功",
// type: "success",
// });
// withImport(para).then(res => {
// window.location.reload()
// })
};
reader.readAsArrayBuffer(f);
};
if (rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
},
-------------------------------------------------------------
后台
-------------------------------------------------------------
@RequestMapping("UploadFile")
@ResponseBody
public CommonResult UploadFile(@RequestBody MultipartFile excelFile) throws Exception {
System.out.println(excelFile);
// JSONObject object = JSON.parseObject(newDate.toString());
// System.out.println(object);
// JSONObject mdroInfo = JSON.parseObject(newDate.toString()).getJSONObject("newDate");
// System.out.println(mdroInfo);
// User reportCard = JSON.parseObject(JSON.parseObject(newDate.toString()).getJSONObject("newDate").toJSONString(),User.class);
// User reportCard = JSON.parseObject(JSON.toJSONString(newDate.get("newDate")),User.class);
// System.out.println(reportCard);
InputStream in = excelFile.getInputStream();
POIFSFileSystem poifsFileSystem = new POIFSFileSystem(in);
HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem);
// 2.读取页脚sheet
HSSFSheet sheet = wb.getSheetAt(0);
int coloumNum = sheet.getRow(0).getPhysicalNumberOfCells();
System.out.println(coloumNum);
List<Map<String, Object>> list = new ArrayList<>();
//获取sheet的行数
int rows = sheet.getPhysicalNumberOfRows();
System.out.println("有行数" + sheet.getFirstRowNum());
System.out.println("有行数" + sheet.getLastRowNum());
for (int j = 1; j < sheet.getLastRowNum(); j++) {
Map<String, Object> map = new HashMap<>();
HSSFRow row = sheet.getRow(j);//行
// System.out.println(row.getPhysicalNumberOfCells());
System.out.println("有列数" + sheet.getRow(0).getLastCellNum());
if (null != row) {
for (int k = 0; k < sheet.getRow(0).getLastCellNum(); k++) {
HSSFCell cell = row.getCell(k);//列
if (null != cell) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC:// 数字
if (DateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(cell.getDateCellValue());
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), str);
} else {
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getNumericCellValue());
}
// System.out.print(cell.getNumericCellValue()
// + " ");
break;
case HSSFCell.CELL_TYPE_STRING:// 字符串
// System.out.print(cell.getStringCellValue()
// + " ");
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getStringCellValue());
break;
case HSSFCell.CELL_TYPE_BOOLEAN:// Boolean
// System.out.println(cell.getBooleanCellValue()
// + " ");
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_FORMULA:// 公式
// System.out.print(cell.getCellFormula() + " ");
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BLANK:// 空值
// System.out.println(" ");
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
break;
case HSSFCell.CELL_TYPE_ERROR:// 故障
// System.out.println(" ");
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
break;
default:
// System.out.print("未知类型 ");
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
break;
}
} else {
System.out.print("- ");
map.put(sheet.getRow(0).getCell(k).getStringCellValue(), "");
}
}
}
list.add(map);
if (map.size() > 0) {
User u = new User();
System.out.println(map);
System.out.println(map.get("角色") == null);
System.out.println("".equals(map.get("角色")));
u.setUserName("".equals(map.get("姓名")) ? "" : map.get("姓名").toString());
u.setRole("".equals(map.get("角色")) ? "" : map.get("角色").toString());
u.setProfessional("".equals(map.get("职称")) ? "" : map.get("职称").toString());
u.setUserId("".equals(map.get("工号")) ? "" : map.get("工号").toString());
u.setDeptname("".equals(map.get("科室")) ? "" : map.get("科室").toString());
u.setIndate("".equals(map.get("入职日期")) ? "" : map.get("入职日期").toString());
CommonResult result = userService.addUser(u);
if (result.getCode() != 200) {
return result;
}
}
}
return new CommonResult(200, "删除成功", list);
}