导入Excel:jsp中

  1. <form action="user_importTradingMoney" enctype="multipart/form-data" method="post">
  2. <label>导入数据
  3. <input type="file" name="tradingMoneyFile" value="选择文件">
  4. <input type="submit" value="提交数据">
  5. </label>
  6. </form>

action中:

action最前面肯定要有下面这几句,而且要有其对应的set、get方法

  1. private File tradingMoneyFile;// 实际上传文件
  2. private String tradingMoneyFileContentType; // 文件的内容类型
  3. private String tradingMoneyFileFileName; // 上传文件名

这是为了通过struts2自动获得上传的文件,当然struts.xml中肯定要有这几句:

  1. <constant name="struts.i18n.reload" value="true" />
  2. <constant name="struts.configuration.xml.reload" value="true" />
  3. <constant name="struts.devMode" value="true" />
  4. <constant name=" struts.action.extension" value="action,," />
  5. <constant name="struts.multipart.maxSize" value="102400000000000" />

文件大小什么的设定自己看着办。。。。

然后action中的importTradingMoney方法如下:

  1. //导入交易金额的Excel表
  2. public String importTradingMoney(){
  3. HttpServletRequest request = ServletActionContext.getRequest();
  4. Calendar cal = Calendar.getInstance();
  5. int month = cal.get(Calendar.MONTH);
  6. int year = cal.get(Calendar.YEAR);
  7. jxl.Workbook wb=null;
  8. try {
  9. //InputStream is=new FileInputStream(tradingMoneyFile);//读取存放数据的excel表格在电脑中的路径
  10. InputStream is=new FileInputStream(tradingMoneyFile);
  11. wb =Workbook.getWorkbook(is);//创建workbook对象,我的理解就是这个整个的excel
  12. Sheet s=wb.getSheet(0);//创建sheet,其实就是excel中的每一页,其中的每一张表,他的下标是从0开始的//这里也就是取得第一张表
  13. int rsRows=s.getRows();//得到所有的行
  14. int rsColumns=s.getColumns();//得到所有的列
  15. for(int i=1;i<rsRows;i++){
  16. String userName=s.getCell(0, i).getContents();//(列,行)
  17. int tradingMoney=Integer.parseInt(s.getCell(1, i).getContents().toString());
  18. TradingMoney tradingMoneyClass=new TradingMoney();
  19. tradingMoneyClass.setUserName(userName);
  20. tradingMoneyClass.setTradingMoney(tradingMoney);
  21. tradingMoneyClass.setYear(year);
  22. tradingMoneyClass.setMonth(month);
  23. userService.addTradingMoney(tradingMoneyClass);
  24. }
  25. } catch (FileNotFoundException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. } catch (BiffException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. } catch (IndexOutOfBoundsException e) {
  32. // TODO Auto-generated catch block
  33. e.printStackTrace();
  34. } catch (IOException e) {
  35. // TODO Auto-generated catch block
  36. e.printStackTrace();
  37. } catch (Exception e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. }
  41. List<User> userList = null;
  42. try {
  43. userList = userService.selectUser(null, null);
  44. } catch (Exception e) {
  45. // TODO Auto-generated catch block
  46. e.printStackTrace();
  47. }
  48. request.setAttribute("userList", userList);
  49. return "selectUser";
  50. }

至于excel的导出,我只是简单地把当前页面复制到了excel中:

  1. <%@page import="java.text.SimpleDateFormat"%>
  2. <%
  3. SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd");
  4. String filename = new String(("佣金明细-"+sf.format(new Date())).getBytes("utf8"),"ISO-8859-1");
  5. response.setHeader("Content-disposition","attachment; filename="+filename+".xls");
  6. %>

因为我要复制a.jsp页面的内容到excel中,而a.jsp中的内容又是便利list而出来,如果直接把上面这段代码加入到a.jsp中,那么a.jsp中的内容你就会看不到,这个页面一打开就会让你下载,所以就没有那种先预览再下载的效果了。。。。所以就在a.jsp中加了一个按钮

  1. <input type="button" value="结果导出为Excel" style="width:120px" class="button-action" onclick="toExcel(<s:property value='#request.owerUser.id' />,'${request.owerUser.userAccount }')"/>
  1. var userIdvar,userAccountvar;
  2. function toExcel(userIdvar,userAccountvar){
  3. //脚本运行后,将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。
  4. window.open('reportUser_selectDetailReportUser?notice=1&userId='+userIdvar+'&userAccount='+userAccountvar,'newwindow','height=600,width=1200,top=80,left=80,toolbar=no,menubar=no,scrollbars=yes, resizable=yes,location=no, status=no');
  5. };

就是重新发一遍请求到b.jsp中,其内容与a.jsp相同,所以这个b.jsp就不需要打开了。。。一切ok!

刚刚新增了不是简单地copy页面,而是从action导出excel表:

  1. //导出Excel表
  2. public void exportForm(){
  3. HttpServletRequest request = ServletActionContext.getRequest();
  4. try {
  5. request.setCharacterEncoding("utf8");
  6.  
  7. Date now = new Date();
  8. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  9. String sDate = sdf.format(now);
  10. String fileName = new String(("用户-"+sDate).getBytes("utf8"),"ISO-8859-1");
  11. String file = fileName+".xls";
  12.  
  13. HttpServletResponse response = ServletActionContext.getResponse();
  14. response.setContentType("application/vnd.ms-excel");
  15. response.setHeader("Content-Disposition" ,"attachment;filename="+file+"");
  16. OutputStream os = response.getOutputStream();
  17. String[] title = {"姓名","账号","角色","电话","邮箱","发展人账号","备注"};
  18. int i=0;
  19.  
  20. WritableWorkbook wwb = Workbook.createWorkbook(os);
  21. WritableSheet ws = wwb.createSheet("用户表", 0);
  22. ws.setColumnView(0,15);
  23. ws.setColumnView(1,15);
  24. ws.setColumnView(2,20);
  25. ws.setColumnView(3,15);
  26. ws.setColumnView(4,18);
  27. ws.setColumnView(5,15);
  28. ws.setColumnView(6,35);
  29. ws.setColumnView(7,15);
  30.  
  31. for( i=0;i<title.length;i++){
  32. WritableFont wf = new WritableFont(WritableFont.TIMES, 11, WritableFont.BOLD, false);
  33. WritableCellFormat wcfF = new WritableCellFormat(wf);
  34. Label labelCF = new Label(i, 0, title[i],wcfF);
  35. ws.addCell(labelCF);
  36. }
  37.  
  38. i=1;
  39. String userName = null;
  40. String userAccount = null;
  41. String userRole = null;
  42. String userPhone = null;
  43. String userEmail = null;
  44. String higherAgentAccount = null;
  45. String userNote = null;
  46.  
  47. //根据selectedIds,生成一个List
  48.  
  49. //List list = this.pageBean.getList();
  50.  
  51. List list = userService.selectUser(null, null);
  52. Iterator it = list.iterator(); // 获得一个迭代子
  53.  
  54. while (it.hasNext()) {
  55. User v = (User)it.next(); // 得到下一个元素
  56.  
  57. userName = v.getUserName();
  58. Label labelC0 = new Label(0,i,userName);
  59. ws.addCell(labelC0);
  60.  
  61. userAccount = v.getUserAccount();
  62. Label labelC1 = new Label(1,i,userAccount);
  63. ws.addCell(labelC1);
  64.  
  65. userRole = v.getRole().getRoleName();
  66. Label labelC2 = new Label(2,i,userRole);
  67. ws.addCell(labelC2);
  68.  
  69. userPhone = v.getUserPhone();
  70. Label labelC3 = new Label(3,i,userPhone);
  71. ws.addCell(labelC3);
  72.  
  73. userEmail = v.getUserEmail();
  74. Label labelC4 = new Label(4,i,userEmail);
  75. ws.addCell(labelC4);
  76.  
  77. higherAgentAccount = v.getHigherAgentAccount();
  78. Label labelC5 = new Label(5,i,higherAgentAccount);
  79. ws.addCell(labelC5);
  80.  
  81. userNote = v.getUserNote();
  82. Label labelC6 = new Label(6,i,userNote);
  83. ws.addCell(labelC6);
  84.  
  85. i++;
  86. }
  87. //写入Exel工作表
  88. os.flush();
  89. wwb.write();
  90. //关闭Excel工作薄对象
  91. wwb.close();
  92. os.close();
  93. } catch (Exception e) {
  94.  
  95. e.printStackTrace();
  96. }
  97. }
  1. //如果想打开并写入一个已经存在的excel,只能通过副本操作
  2. //Excel获得文件
  3. Workbook wb2=Workbook.getWorkbook(excelFile);
  4. //打开一个文件的副本,并且指定数据写回到原文件
  5. WritableWorkbook wwb2= Workbook.createWorkbook(excelFile,wb2);
  6. WritableSheet ws = wwb2.getSheet(0);

  

jsp中导入导出excel,ssh框架的更多相关文章

  1. 从SQL Server中导入/导出Excel的基本方法(转)

    从sql server中导入/导出 excel 的基本方法 /*=========== 导入/导出 excel 的基本方法 ===========*/ 从excel文档中,导入数据到sql数据库中,很 ...

  2. php中导入导出excel的原理

    在php中我们要经常导入导出excel文件,方便后台管理.那么php导入和导出excel的原理到底是什么呢?excel分为两大版本excel2007(后缀.xlsx).excel2003(后缀.xls ...

  3. Java中导入导出Excel -- POI技术

    一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实 ...

  4. .NET中导入导出Excel总结

    前一段时间,做了Excle的导入和导出,在此记录开发思路及技术要点,以便在今后开发中参考.                                                        ...

  5. .NET Core 中导入导出Excel

    操作Excel是一个比较常见的业务场景,本篇将使用EPPlus简单演示一个导入导出的示例. EPPlus开源地址:https://github.com/EPPlusSoftware/EPPlus 在项 ...

  6. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  7. ASP.NET Core导入导出Excel文件

    ASP.NET Core导入导出Excel文件 希望在ASP.NET Core中导入导出Excel文件,在网上搜了一遍,基本都是使用EPPlus插件,EPPlus挺好用,但商用需要授权,各位码友若有好 ...

  8. C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序

    C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ Outp ...

  9. Vue框架下实现导入导出Excel、导出PDF

    项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...

随机推荐

  1. rman catalog (rman 恢复目录)

    受控制文件大小的限制,一般rman需要用rman catalog来管理及存放备份信息: 这里介绍一下创建rman catalog的步骤: C:\Documents andSettings\Admini ...

  2. Android 仿Win8的metro的UI界面(上)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23441455 昨晚没事手机下载了一些APP,发现现在仿win8的主界面越来越多, ...

  3. 【解决】WordPress FTP连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限

    刚装好wordpress,发现后台预装了两个插件,想删掉,结果要登录FTP,死活登不上去,提示"连接服务器时出错,请检查设置,WordPress需要访问您网页服务器的权限",网上也 ...

  4. fastUtils学习

    比传统java集合工具类速度更快 google的guava也新增了java容器新的功能,功能更加强大,参考文档:http://www.ibm.com/developerworks/cn/java/j- ...

  5. (转)关于c#中的事件

    原文链接http://blog.csdn.net/joyhen/article/details/8500211 如有不明白的地方欢迎加QQ群14670545 探讨 最近在看委托,然后看到事件,以前一直 ...

  6. ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST【error收集】

    之前一直没有注意一个事情, 关于设置archive归档路径设置的问题. 设置数据库为归档模式的命令: 1.首先要切换到mount状态: 2.执行alter system archivelog; 3.查 ...

  7. 【转】setStyleSheet用法

    [转自]http://blog.csdn.net/seanyxie/article/details/5925723 使用setStyleSheet来设置图形界面的外观: QT Style Sheets ...

  8. php wampp 访问数据库

    //获取用户信息private function UlikeGetUserInfo($Wechat,$data) { $this->logger("到达UlikeFunction.in ...

  9. 使用padding-top实现自适应背景图片

    在父级容器中设定最大的宽度,由于背景图片会出现塌陷的情况,有宽度无高度, 则,在图片容器中添加以下属性 padding-top:%(计算方式:图片的高度/图片的宽度*100%) background- ...

  10. CSS中zoom:1的作用

    兼容IE6.IE7.IE8浏览器,经常会遇到一些问题,可以使用zoom:1来解决,有如下作用:触发IE浏览器的haslayout解决ie下的浮动,margin重叠等一些问题.比如,本站使用DIV做一行 ...