框架(ssh)
1.公共方法。
/**
* 文件上传的属性
*/
protected String fileFileName;
protected File file;
/**
* 定义工作薄的数组
*/
protected int[] sheetNum;
public String savefile() {
// 生成文件名 防止上传文件重复,用时间戳和6位随机数
// 获得时间
SimpleDateFormat sim = new SimpleDateFormat("yyyyMMddHHmmss");
String da = sim.format(new Date());
// 获得6位随机数
RandomStringUtils ran = new RandomStringUtils();
String numTem = ran.randomNumeric(6);
// 截取后缀
String st = fileFileName.substring(fileFileName.lastIndexOf("."));
// 得到新的文件名
String newName = da + numTem + st;
// 保存文件重命名
file.renameTo(
new File(ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/upload/")
+ "\\" + newName));
return newName;
}
/**
2.action代码
* 导入excel*
* @return
* @throws Exception
*/
public String importExcel() throws Exception {
// 方法的调用
String fname = super.savefile();
// 定义常量,页面接值
super.fileFileName = fname;
File fil = new File(ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/upload/")
+ "\\" + fname);
InputStream inputStream = new FileInputStream(fil);
POIFSFileSystem f = new POIFSFileSystem(inputStream);
HSSFWorkbook book = new HSSFWorkbook(f);
// 获取sheet个数
int sheetNum = book.getNumberOfSheets();
int sheetName[] = new int[sheetNum];
int successNumber = 0;
int faildNumber = 0;
StringBuffer failureMsg = new StringBuffer();
for (int i = 0; i < sheetName.length; i++) {
HSSFSheet sheet = book.getSheetAt(sheetName[i]);
// 获取单行
int rowCount = sheet.getPhysicalNumberOfRows();
for (int j = 1; j < rowCount; j++) {
HSSFRow row = sheet.getRow(j);
// 通过行 获得列
HSSFCell cell0 = row.getCell((short) 0);
String code = cell0.getStringCellValue().toString();
HSSFCell cell1 = row.getCell((short) 1);
String name = cell1.getStringCellValue().toString();
HSSFCell cell2 = row.getCell((short) 2);
String enName = cell2.getStringCellValue().toString();
HSSFCell cell3 = row.getCell((short) 3);
String orderNum = cell3.getStringCellValue().toString();
HSSFCell cell4 = row.getCell((short) 4);
String status = cell4.getStringCellValue().toString();
// 判断数据是否为空
if (StringUtils.isNotBlank(code) && StringUtils.isNotBlank(name) && StringUtils.isNotBlank(enName)) {
// 判断数据是否符合规则
if (RegexUtils.checkEngNum(code) && RegexUtils.checkEnCode(enName)) {
if (StringUtils.isBlank(orderNum) && StringUtils.isBlank(status)) {
Cargo cargo = new Cargo();
cargo.setCode(code);
cargo.setName(name);
cargo.setEnName(enName);
cargo.setStatus(0);
if (!cargoService.uniqueCheck(cargo.getCode())) {
cargoService.createObject(cargo);
} else {
cargoService.updateCargo(cargo);
}
successNumber++;
} else {
Cargo cargo = new Cargo();
if (StringUtils.isNotBlank(orderNum)) {
if (RegexUtils.checkDigit(orderNum)) {
cargo.setOrderNum(Integer.parseInt(orderNum));
} else {
failureMsg.append("编码" + code + "的数据不符合规则\n");
faildNumber++;
continue;
}
}
if (StringUtils.isNotBlank(status)) {
String status1 = paramDataService.getCodeByName(status);
if (StringUtils.isNotBlank(status1)) {
cargo.setStatus(Integer.parseInt(status1));
} else {
failureMsg.append("编码" + code + "的数据不符合规则\n");
faildNumber++;
continue;
}
}
cargo.setCode(code);
cargo.setName(name);
cargo.setEnName(enName);
if (!cargoService.uniqueCheck(cargo.getCode())) {
cargoService.saveObject(cargo);
} else {
cargoService.updateCargo(cargo);
}
successNumber++;
}
} else {
failureMsg.append("编码" + code + "的数据不符合规则\n");
faildNumber++;
}
} else {
failureMsg.append("编码" + code + "的数据为空\n");
faildNumber++;
}
}
inputStream.close();
}
String countStr = "导入成功:" + successNumber + "条\n导入失败:" + faildNumber + "条\n";
this.setSuccessinfo(countStr + failureMsg.toString());
return "importExcel";
}
3.xml配置
<result name="importExcel" type="redirectAction">cargoSearchAction</result>(两个action直接的跳转)