java公共excel导入_Java实现Excel的导入功能

上次项目开发过程中需要实现通过excel文件进行导入。我才用了WorkbookFactory方法,因为导入的数据需要处理,所以在程序中我使用List对读入的数据进行了分类。所以大家对数据处理可以不用关心,把重点放在WorkbookFactory的使用方法上。今天把这个方法分享给大家,话不多说,直接上代码。

java端代码

public String importFile(HttpServletRequest request,HttpServletResponse response){

Map returnMap = new HashMap();

//需要处理的数据

List> disposeList = new ArrayList>();

//不需要处理的数据

List> noDisposeList = new ArrayList>();

boolean errorFlag = false;

try {

//SpringMVC 中处理表单上传的方法

MultipartResolver resolver=new CommonsMultipartResolver(request

.getSession().getServletContext());

MultipartHttpServletRequest multipartRequest = resolver

.resolveMultipart(request);

Iterator iter=multipartRequest.getFileNames();

MultipartFile mf = null;

while (iter.hasNext()) {

mf=multipartRequest.getFile(iter.next().toString());

}

org.apache.poi.ss.usermodel.Workbook wb = WorkbookFactory.create(mf.getInputStream());

// 创建临时目录,存放此次上传的文件,此处可以直接给一个默认路径

String tempFolder = getTempFolder("wtgl");

File file = new File(tempFolder);

file.mkdir();

mf.transferTo(new File(tempFolder+File.separator+mf.getOriginalFilename()));

// 生成临时文件

//tbDataTaskServiceImpl.scSjData(tempFolder, mf.getOriginalFilename());

Sheet sheet = wb.getSheetAt(0);

Row row = null;

/**这里是关键点,对excel以行为单位取出每一个单元格中的值。补充一点,

*如果excel表中的单元格被单击过,但是没有值会取出null,但是如果单元格没有

*值也没有被点击过此时或报错。

*/

for (int i=sheet.getFirstRowNum()+1; i

Map disposeMap = new LinkedHashMap();

Map noDisposeMap = new LinkedHashMap();

row= sheet.getRow(i);

if(row!=null){

Cell col1 = row.getCell(0);

Cell col2 = row.getCell(1);

Cell col3 = row.getCell(2);

Cell col4 = row.getCell(3);

Cell col5 = row.getCell(4);

Cell col6 = row.getCell(5);

Cell col7 = row.getCell(6);

Cell col8 = row.getCell(7);

Cell col9 = row.getCell(8);

noDisposeMap.put("WTBH", col1.toString());

noDisposeMap.put("WTZT", col2.toString());

//noDisposeMap.put("ZPSJ_DATA", col6.toString());

noDisposeMap.put("CLSJ_DATA", col8.toString());

noDisposeMap.put("CLRMC", col9.toString());

disposeMap.put("SBDS", col3.toString());

disposeMap.put("YJCD", col4.toString());

disposeMap.put("LCHJ", col5.toString());

disposeMap.put("CLJG", col7.toString());

}

noDisposeList.add(noDisposeMap);

disposeList.add(disposeMap);

}

Boolean result = commonService.importWtIntoSql(disposeList, noDisposeList);

if(result){

returnMap.put("result", true);

returnMap.put("message", "123456");

}else{

returnMap.put("result", false);

}

} catch (Exception e) {

errorFlag = true;

e.printStackTrace();

returnMap.put("result", false);

returnMap.put("message", "发生未知错误,上传失败。");

} finally {

String tempFolder = CommonUtils.getTempFolder("wtgl");

CommonUtils.deletefile(tempFolder);

}

if (errorFlag) {

// 解决平台service里报错导致错误信息无法返回到页面的问题

response.setContentType("text/xml;charset=UTF-8");

try {

response.getWriter().print(

JSONObject.fromObject(returnMap).toString());

} catch (IOException e1) {

e1.printStackTrace();

}

} else {

}

return JsonBinder.getJsonBinder().toJson(returnMap.get("result").toString());

}

}

/**

* 获取临时文件夹

*

* @return

*/

public static String getTempFolder(String filePath) {

return Platform.getPlatform().getBaseDir() + filePath

+ File.separator;

}

前端JS代码

function importFunction(){

importFile({

url: 'common/contCommon/importFile.do',

multiple: false,

beforeSend: function(file){

var h = document.body.scrollHeight + "px";

//实现弹窗选择文件页面

$("

.css({display:"block",'background-color':'#000000',

width:"100%",height:h,

'z-index':100000,

opacity:0.2})

.appendTo("body");

$("

loading2.gif%5C%22" +

"

正在导入文件,请稍后……
").appendTo("body")

.css({display:"block",

'z-index':100000,

'position': 'fixed',

'background-color': '#FFFFFF',

left:($(document.body).outerWidth(true) - 190) / 2,

top:(document.body.clientHeight - 35) / 2,

padding: "25px 20px 52px 10px",

height: "25px"});

forbiddenBodyRightClick();

},

callback: function(res){

res = JSON.parse(res);

if(res.result){

$('.datagrid-mask-msg').remove();

$('.datagrid-mask').remove();

artDialog({content:'导入成功!',time:2.0});

queryGridData(param);

}else{

$('.datagrid-mask-msg').remove();

$('.datagrid-mask').remove();

artDialog({content:'导入失败!',time:2.0});

}

},

uploading: function(pre){

}

});

}

此处只是粘贴了主要代码,如果有什么不理解的可以留言,看到后会回复的。

PS:欢迎大家批评指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值