action是用struts2写的;前端界面easyUI写的,

前端:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Basic DataGrid - jQuery EasyUI Demo</title>
  6. <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.3/themes/default/easyui.css">
  7. <link rel="stylesheet" type="text/css" href="jquery-easyui-1.3.3/themes/icon.css">
  8. <script type="text/javascript" src="jquery-easyui-1.3.3/jquery.min.js"></script>
  9. <script type="text/javascript" src="jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
  10. <script type="text/javascript" src="jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
  11. <script>
  12. //批量导入数据,打开dialog
  13. function openUploadFileDialog(){
  14. $("#dlg2").dialog('open').dialog('setTitle','批量导入数据');
  15. }
  16.  
  17. //下载批量导入模板
  18. //userExporTemplate.xls位于WebContent/template/下面
  19. //一个纯的js来下载模板
  20. function downloadTemplate(){
  21. window.open('template/userExporTemplate.xls');
  22. }
  23.  
  24. //上传Excel文件,交给后台解析
  25. //其中uploadForm的action=user!upload
  26. function uploadFile(){
  27. $("#uploadForm").form("submit",{
  28. success:function(result){
  29. var result=eval('('+result+')');
  30. if(result.errorMsg){
  31. $.messager.alert("系统提示",result.errorMsg);
  32. }else{
  33. $.messager.alert("系统提示","上传成功");
  34. $("#dlg2").dialog("close");
  35. $("#dg").datagrid("reload");
  36. }
  37. }
  38. });
  39. }
  40. </script>
  41. </head>
  42. <body>
  43. <!-- 一排操作按钮 -->
  44. <div id="toolbar">
  45. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-import" plain="true" onclick="openUploadFileDialog()">用模版批量导入数据</a>
  46. </div>
  47.  
  48. <!-- 批量导入数据模板Excel 的dialog -->
  49. <div id="dlg2" class="easyui-dialog" style="width:400px;height:180px;padding:10px 20px"
  50. closed="true" buttons="#dlg-buttons2">
  51. <form id="uploadForm" action="user!upload" method="post" enctype="multipart/form-data">
  52. <table>
  53. <tr>
  54. <td>下载模版:</td>
  55. <td><a href="javascript:void(0)" class="easyui-linkbutton" onclick="downloadTemplate()">导入模版</a></td>
  56. </tr>
  57. <tr>
  58. <td>上传文件:</td>
  59. <td><input type="file" name="userUploadFile"></td>
  60. </tr>
  61. </table>
  62. </form>
  63. </div>
  64.  
  65. <div id="dlg-buttons2">
  66. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-ok" onclick="uploadFile()">上传</a>
  67. <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$('#dlg2').dialog('close')">关闭</a>
  68. </div>
  69. </body>
  70. </html>

后端:

UserAction中upload方法:

  1. public class UserAction extends ActionSupport{
  2.  
  3. private File userUploadFile; //用来接收上传的文件
  4.  
  5. public File getUserUploadFile() {
  6. return userUploadFile;
  7. }
  8. public void setUserUploadFile(File userUploadFile) {
  9. this.userUploadFile = userUploadFile;
  10. }
  11.  
  12. /**
  13. * 上传文件,解析Excel
  14. */
  15. public String upload() throws Exception{
  16. POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(userUploadFile));
  17. HSSFWorkbook wb = new HSSFWorkbook(fs);
  18. HSSFSheet hssfSheet = wb.getSheetAt(0); //获取第一个sheet页
  19. if(hssfSheet != null){
  20. for(int rowNum=1; rowNum<=hssfSheet.getLastRowNum(); rowNum++){
  21. HSSFRow hssfRow = hssfSheet.getRow(rowNum);
  22. if(hssfRow == null){
  23. continue;
  24. }
  25. User user = new User();
  26. user.setName(ExcelUtil.formatCell(hssfRow.getCell(0)));
  27. user.setPhone(ExcelUtil.formatCell(hssfRow.getCell(1)));
  28. user.setEmail(ExcelUtil.formatCell(hssfRow.getCell(2)));
  29. user.setQq(ExcelUtil.formatCell(hssfRow.getCell(3)));
  30. Connection conn = null;
  31. try{
  32. con=dbUtil.getCon();
  33. userDao.userAdd(con, user);
  34. }catch(Exception e){
  35. e.printStackTrace();
  36. }finally{
  37. dbUtil.closeCon(con);
  38. }
  39. }
  40. }
  41. JSONObject result=new JSONObject();
  42. result.put("success", "true");
  43. ResponseUtil.write(ServletActionContext.getResponse(), result);
  44. return null;
  45. }
  46.  
  47. }

对单元格进行分类处理(String、boolean、number)的ExcelUtil:

  1. /**
  2. * 处理Excel的util
  3. */
  4. public class ExcelUtil{
  5.  
  6. /**
  7. * 传入Cell,根据Cell的类型转化,返回的都是String
  8. */
  9. public static String formatCell(HSSFCell hssfCell){
  10. if(hssfCell == null){
  11. return "";
  12. }else{
  13. if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN){
  14. return String.valueOf(hssfCell.getBooleanCellValue());
  15. }else if(hssfCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
  16. return String.valueOf(hssfCell.getNumericCellValue());
  17. }else{
  18. return String.valueOf(hssfCell.getStringCellValue());
  19. }
  20. }
  21. }
  22.  
  23. }

图:

java操作Excel之POI(6)使用POI实现使用模板批量添加数据的更多相关文章

  1. java操作Excel之POI(5)利用POI实现使用模板批量导出数据

    后台导出方法: 在源文件夹src下面放个准备好的模板:/com/cy/template/userExportTemplate.xls,这个模板有头部一行: /** * 后台导出方法 * 利用POI实现 ...

  2. java实现excel的导入导出(poi详解)[转]

    java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava  经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...

  3. java操作Excel处理数字类型的精度损失问题验证

    java操作Excel处理数字类型的精度损失问题验证: 场景: CELL_TYPE_NUMERIC-->CELL_TYPE_STRING--->CELL_TYPE_NUMERIC POI版 ...

  4. java操作Excel、PDF文件

    java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...

  5. java操作excel 工具类

    java操作excel 可参考https://blog.csdn.net/xunwei0303/article/details/53213130 直接上代码: 一.java生成excel文件: pac ...

  6. Java 操作 EXCEL

    今天帮朋友写了一段用来处理EXCEL内容的程序,在这里记录下自己的学习过程.主要是对EXCEL表格中的内容做分类和统计,使用计算机来做这种重复的机械性地工作再好不过了.首先,我们需要下载一个java操 ...

  7. JAVA操作Excel时文字自适应单元格的宽度设置方法

    使用JAVA操作Excel通常都使用JXL,方法很简单网上也有很多的教程,然后往往一些细节性的问题却导致我们这些Programmer苦恼不已.这两天帮一个朋友做一个Excel表格自动生成的小软件,就遇 ...

  8. jxl的使用总结(java操作excel)

    jxl.jar是通过java操作excel表格的工具类库: jxl.jar包:链接:http://pan.baidu.com/s/1o8qFJHw 密码:5jyq 1:通过模拟实现创建一个表格,然后模 ...

  9. Java操作Excel文件以及在Android中的应用

    本文章由临江仙原创,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/10286563 Excel作为一种有格式的文件,可以使用Java来对 ...

随机推荐

  1. pymysql 单独获取表的栏位名称

    有时需要获取表的栏位+数值,请参考 https://www.cnblogs.com/xibuhaohao/p/9996571.html 有时只需要栏位名称,那么可以使用 col=self.cursor ...

  2. XML解析之JAXP

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  3. Jmeter BeanShell 从数据库中获取数据并创建一个requesBody

    一.前言 在测试接口的时候常常会使用到数据库中的数据,当要使用大量的数据时,仅仅使用数据库查询是不够的.还需要使用自动化让操作更简便. 下面以一个简单的例子阐述一下如何使用beanShell让代码更简 ...

  4. mac下搭建discuz论坛

    1.开启web共享.(Mountain Lion参考:http://www.guomii.com/posts/30136) 2.支持php. http://www.cnblogs.com/elfsun ...

  5. 配置动态加载模块和js分模块打包,生产环境和开发环境公共常量配置

    1. 话不多少 先上代码:  route.js  // 引用模板 分模块编译 const main = r => require.ensure([], () => r(require('. ...

  6. 类似select下拉选择框同时又支持手动输入的元素 datalist 介绍。

    有时候我们会有这样的需求,通过使用下拉菜单给用户一定的选择范围,同时又可以使用户在找不到选择项的时候手动输入.这个时候我们就需要用到html5的datalist属性了. datalist包含<o ...

  7. QAV250四轴穿越机安装全程详解(多图)

    QAV250四轴穿越机安装全程详解 最近团队准备使用轻型穿越机QAV250做实验,本文记录了QAV250的安装过程,整理了开箱后较合理的安装顺序,以及各个步骤的注意事项,希望对有需要的朋友有所帮助.主 ...

  8. WCF异常相关

    1.端口没打开 解决办法: services.msc 启动Net.Tcp Port Sharing Service 2.由于访问被拒,服务终结点未能侦听 URI“net.tcp://localhost ...

  9. JS禁止用F5键

    //禁止用F5键 function document.onkeydown() { if ( event.keyCode==116) { event.keyCode = 0; event.cancelB ...

  10. PC端体验效果最佳epub阅读器——iRead爱读书

    官网:http://www.ireadhome.com/