Java实现Excel批量导入数据

网友投稿 365 2022-11-25


Java实现Excel批量导入数据

Excel的批量导入是很常见的功能,这里采用 Jxl实现,数据量或样式要求较高可以采http://用 poi

框架环境:Spring + SpringMvc(注解实现)

1.首先导入依赖jar包

net.sourceforge.jexcelapi

jxl

2.6.10

2.前端页面–jsp(enctype必须为"multipart/form-data" )

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

action="/hpersonnel/import.do">

//" />

下载

3.视图模板

4.Controller

@ResponseBody

@RequestMapping(value = "import")

public Object import(MultipartFile file) {

if (file.isEmpty()) {

return ResultObject.failure("文件为空");

}

ResultObject result = new ResultObject();

//记录集合

List mapList = new ArrayList();

//校验结果

boolean reqFlag = true;

//回复消息

String reqMsg = "";

//报错消息数

Integer error = 0;

//解析文件

try {

//转换成输入流

InputStream is = file.getInputStream();

//得到excel

Workbook workbook = Workbook.getWorkbook(is);

//得到sheet

Sheet sheet = workbook.getSheet(0);

//得到列数

int colsNum = sheet.getColumns();

//得到行数

int rowsNum = sheet.getRows();

if (rowsNum == 1) return ResultObject.failure("没有数据");

//单元格

Cell cell;

//数据校验

for (int i = 1; i < rowsNum; i++) {//第一行是标题,所以i从1开始

Map map = new HashMap();

for (int j = 0; j < colsNum; j++) {

cell = sheet.getCell(j, i);//第一个参数是列.第二个参数是行

if (j < 4 && "".equals(cell.getContents())) { //----这里判断必填项(前4列)

reqFlag = false;

reqMsg += "第" + (i + 1) + "行错误,错误信息:" + "必填项缺漏";

reqMsg += "
";

error++;

break;

}

String cellString = cell.getConteohtbhxRabnts();

cellString = cellString.trim();

switch (j) {

case 1: {

//进行校验处理,例如手机号

if (!StringUtil.isMobileNo(cellString)) {

reqFlag = false;

reqMsg += "第" + (i + 1) + "行错误,错误信息:" + "联系电话有误";

reqMsg += "
";

error++;

} else {

map.put(j, cellString);

}

break;

}

case 2: { ### break; }

case 3: { ### break; }

//无需校验,归入default

default: {

map.put(j, cell.getContents());

}

}

}

if (reqFlag) {//校验通过

mapList.add(map);

}

}

} catch (IOException e) {

e.printStackTrace();

} catch (BiffException e) {

e.printStackTrace();

}

//入库

try {

if (mapList.size() > 0 && reqFlag) {

//此处try,catch应优化为事务处理maplist实现全记录成功或失败

result.setSuccess("提交成功");

} else {

if (error > 10) {//设置要显示的错误数

int index = StringUtil.getIndex(reqMsg, 10, "http://
");

reqMsg = reqMsg.substring(0, index + 4);

reqMsg += "未显示错误数:" + (error - 10) + "条";

reqMsg += "
";

}

result.setFailure(reqMsg);

}

} catch (Exception e) {

result.setFailure("入库错误,请联系管理员!");

e.printStackTrace();

}

return result;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 日期和时间类的基本使用
下一篇:Java Excel透视表相关操作实现代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~