POI 导入excel

框架(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直接的跳转)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值