仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 461|回复: 7
打印 上一主题 下一主题

[学习教程] 了解下JAVA的java中利用poi分离Struts 2来导出execl表格

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:00:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
第一步写action办法:
  1. publicStringexportActiveExcel()
  2. {
  3. Stringname="活泼度列表.xls";
  4. try{
  5. name=java.net.URLEncoder.encode(name,"UTF-8");
  6. fileName=newString(name.getBytes(),"iso-8859-1");
  7. }catch(UnsupportedEncodingExceptione){
  8. e.printStackTrace();
  9. }
  10. return"success";
  11. }
复制代码
fileName为类变量要天生get和set办法,作为文件的称号
第二步把数据写进到一个流里:
  1. publicInputStreamgetInputStream()
  2. {
  3. //测试先生
  4. ExportExcelex=newExportExcel();
  5. String[]headers={"学号","姓名","岁数","性别","出身日期"};
  6. JSONArrayarray=newJSONArray();
  7. JSONArrayarr=newJSONArray();
  8. arr.add(10000001);
  9. arr.add("张三");
  10. arr.add(20);
  11. arr.add(true);
  12. arr.add("2013-5-6");
  13. JSONArrayarr1=newJSONArray();
  14. arr1.add(10000002);
  15. arr1.add("李四");
  16. arr1.add(24);
  17. arr1.add(false);
  18. arr1.add("2013-5-6");
  19. array.add(arr);
  20. array.add(arr1);
  21. returnex.exportExcel("活泼度剖析",headers,array);
  22. }
复制代码
用到的类:
  1. publicclassExportExcel
  2. {
  3. @SuppressWarnings("deprecation")
  4. publicInputStreamexportExcel(Stringtitle,String[]headers,JSONArrayarray)
  5. {
  6. //声明一个事情薄
  7. HSSFWorkbookworkbook=newHSSFWorkbook();
  8. //天生一个表格
  9. HSSFSheetsheet=workbook.createSheet(title);
  10. //设置表格默许列宽度为15个字节
  11. sheet.setDefaultColumnWidth((short)30);
  12. //天生一个题目款式
  13. HSSFCellStyletitleStyle=workbook.createCellStyle();
  14. //设置这些款式
  15. titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  16. titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  17. titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  18. titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
  19. titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
  20. titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  21. //天生一个题目字体
  22. HSSFFontfont=workbook.createFont();
  23. font.setColor(HSSFColor.VIOLET.index);
  24. font.setFontHeightInPoints((short)12);
  25. font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
  26. //把字体使用到以后的款式
  27. titleStyle.setFont(font);
  28. //天生内容款式
  29. HSSFCellStylecontentStyle=workbook.createCellStyle();
  30. contentStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
  31. contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
  32. contentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
  33. contentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
  34. contentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
  35. contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  36. contentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
  37. //天生内容字体
  38. HSSFFontcontentFont=workbook.createFont();
  39. contentFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
  40. //把字体使用到以后的款式
  41. contentStyle.setFont(contentFont);
  42. //发生表格题目行
  43. HSSFRowrow=sheet.createRow(0);
  44. for(shorti=0;i<headers.length;i++)
  45. {
  46. HSSFCellcell=row.createCell(i);
  47. cell.setCellStyle(titleStyle);
  48. HSSFRichTextStringtext=newHSSFRichTextString(headers[i]);
  49. cell.setCellValue(text);
  50. }
  51. //天生内容行
  52. for(inti=0;i<array.size();i++)
  53. {
  54. row=sheet.createRow(i+1);
  55. JSONArrayarr=(JSONArray)array.get(i);
  56. for(intj=0;j<arr.size();j++)
  57. {
  58. HSSFCellcell=row.createCell(j);
  59. cell.setCellStyle(contentStyle);
  60. HSSFRichTextStringrichString=newHSSFRichTextString(arr.get(j).toString());
  61. HSSFFontfont3=workbook.createFont();
  62. font3.setColor(HSSFColor.BLUE.index);
  63. richString.applyFont(font3);
  64. cell.setCellValue(richString);
  65. }
  66. }
  67. //写进输入流
  68. ByteArrayOutputStreambaos=newByteArrayOutputStream();
  69. try
  70. {
  71. workbook.write(baos);//写进
  72. }
  73. catch(IOExceptione)
  74. {
  75. e.printStackTrace();
  76. }
  77. byte[]ba=baos.toByteArray();
  78. ByteArrayInputStreambais=newByteArrayInputStream(ba);
  79. try
  80. {
  81. baos.close();
  82. }
  83. catch(IOExceptione)
  84. {
  85. e.printStackTrace();
  86. }
  87. returnbais;
  88. }
  89. }
复制代码
检察本栏目更多出色内容:http://www.bianceng.cn/Programming/Java/
第三步设置struts.xml文件
  1. <actionname="exportActiveExcel"class="activeCountAction"
  2. method="exportActiveExcel">
  3. <resultname="success"type="stream">
  4. <paramname="contentType">application/vnd.ms-excel</param>
  5. <paramname="contentDisposition">attachment;filename="${fileName}"</param>
  6. <paramname="inputName">inputStream</param>
  7. <paramname="bufferSize">4096</param>
  8. </result>
  9. </action>
复制代码
inputName的值要与流的办法分歧,天生getXxxxx,否则找不到办法
在页面上间接挪用action办法的路径
<inputtype="button"value="数据导出"onclick="javascript:window.location.href=exportActiveExcel;"/>

到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。
沙发
发表于 2015-1-19 16:36:28 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
莫相离 该用户已被删除
板凳
发表于 2015-1-24 14:50:33 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
若天明 该用户已被删除
地板
发表于 2015-2-4 14:44:32 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-10 01:47:32 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
山那边是海 该用户已被删除
6#
发表于 2015-3-9 23:12:29 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
小魔女 该用户已被删除
7#
发表于 2015-3-17 03:00:22 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
因胸联盟 该用户已被删除
8#
发表于 2015-3-23 17:05:34 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 18:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表