Java web Excel导入和导出

在做web开发时,我们经常会用到数据表格的导入导出功能,这样可以帮我们节省人工操作的时间,极大提高办事效率,下面,直入正题: 
笔者所做的导入导出是针对Java springMVC框架、工作簿poi以及前端plupload.js插件设计的。

第一步、总体介绍

首先,来看页面展示,如下图: 
这里写图片描述 
导入菜单包含模板下载和导入数据,如下图: 
这里写图片描述 
点击模板下载,弹出模板下载对话框,如下图: 
这里写图片描述 
点击导入数据,弹出导入对话框,如下图: 
这里写图片描述 
接下来,再来看看导出,包含导出当前页和导出全部,如下图: 
这里写图片描述 
点击导出当前页或是导出全部后,生成excel,如下图: 
这里写图片描述 
最后再来看看导入模板和生成的excel,如下图: 
这里写图片描述 
我的模板是放在src/main/webapp/template下的。

第二步、模板下载和导入

首先,来看看前台导入、导出的jsp代码:

<!-- 导出,当前页和页大小隐藏域 -->
<input type="hidden" name="currentPage" id="current" value="0"/>
<input type="hidden" name="pageSize" id="size" value="0"/>
ID:<input type="text" name="id" id="userId"/> 姓名:<input type="text" name="userName"/> <a href="javascript:void(0);" id="search">搜索</a>
</form>
</div>

<!-- 导入 -->
<a 
type="import" 
id="import" 
class="easyui-menubutton" 
suffix="xls"
resouseCode="user" 
importurl="sys/user/importData.do"
callback="myCallback">导入</a>
<!-- 导出 -->
<a type="export" id="export" class="easyui-menubutton">导出</a>
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

然后,再来看看js:

$(function() {
    
  var uploadsubmenu = '<div id="upload_sub" style="width:100px;">'+
  '<div id="download_templ"><span class="exportDownload"></span>模板下载</div>'+
  '<h1 class="excel-line" id="line1"></h1>'+
  '<div id="import_data"><span class="exportData"></span>导入数据</div>'+
  '</div>';
  if($("#upload_sub").length<1){
    $("body").append(uploadsubmenu);
  }

  //将导入设为菜单按钮
  var importMenu = $('#import').menubutton({ 
    menu: "#upload_sub",
    iconCls:"icon-import"
  }); 

  //为子菜单添加点击事件
  $(importMenu.menubutton('options').menu).menu({
    onClick: function (item) {
    
      if(item.id == 'download_templ'){
        var resouseCode = $('#import').attr('resouseCode');
        var suffix = $('#import').attr('suffix');
        loadTemplate(resouseCode, suffix);
      }
      if(item.id == 'import_data'){
        var importurl = $('#import').attr('importurl');
        var callback = $('#import').attr('callback');
        var resouseCode = $('#import').attr('resouseCode');
        makerUpload(importurl, callback, resouseCode);
      }
    }
});
});

/**
 * 模板下载
 */
function loadTemplate(resouseCode, suffix) {
    
  //文件名+后缀名
  var fileName = resouseCode + '.' + suffix

  var templatediv = '<div id="templatediv" style="width:400px;height:200px;">'+
  '</div>';
  if (window.top.$('#templatediv').length == 0) {
    window.top.$("body").append(templatediv);
  }
  var templistspan = "";
  templistspan +='<div class="download-list">'
  templistspan += '<span><a id="downloadBtn" href="file/fileHandle/downloadtemplate.do?fileName='+encodeURI(encodeURI( fileName))+'">'+fileName+'</a></span>'
  templistspan +='</div>';
  window.top.$("#templatediv").html(templistspan);
  //弹出下载模板
  window.top.$("#templatediv").dialog({
    title:"下载模板",
    modal:true  
  });

  //下载模板完了就关闭对话框
  window.top.$("#downloadBtn").click(function() {
    
    window.top.$("#templatediv").dialog('close');
  });
}

/**
 * 上传导入
 */
function makerUpload(importurl, callback, resouseCode) {
    
  console.log('弹出导入对话框。。');

  //用户详情对话框
  var importWindow = window.top.$('#importWin');
  if(importWindow.length <= 0) {
    importWindow = window.top.$("<div id='importWin'/>").appendTo(window.top.document.body);
  }
  importWindow.window({
    title:'导入',
    closed: false,
    closable: true,
    draggable: true,
    resizable: true,
    width: 500,
    height: 350,
    modal: true,
    href: 'sys/redirect/redirectHomePage.do?path=import&callback=' + callback + '&resouseCode=' + resouseCode + '&importurl=' + importurl,
    onClose: function() {
    
      importWindow.window("destroy");
    }
  });
}
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

然后,再来看看导出对话框对应的jsp页面import.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
  String callback = request.getParameter("callback");
  
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值