若相依 发表于 2015-1-18 11:00:08

了解下JAVA的java中利用poi分离Struts 2来导出execl表格

多谢指点,其实我对.net和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
第一步写action办法:

publicStringexportActiveExcel()
{
Stringname="活泼度列表.xls";
try{
name=java.net.URLEncoder.encode(name,"UTF-8");
fileName=newString(name.getBytes(),"iso-8859-1");
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
return"success";
}fileName为类变量要天生get和set办法,作为文件的称号
第二步把数据写进到一个流里:

publicInputStreamgetInputStream()
{
//测试先生
ExportExcelex=newExportExcel();
String[]headers={"学号","姓名","岁数","性别","出身日期"};
JSONArrayarray=newJSONArray();
JSONArrayarr=newJSONArray();
arr.add(10000001);
arr.add("张三");
arr.add(20);
arr.add(true);
arr.add("2013-5-6");
JSONArrayarr1=newJSONArray();
arr1.add(10000002);
arr1.add("李四");
arr1.add(24);
arr1.add(false);
arr1.add("2013-5-6");
array.add(arr);
array.add(arr1);
returnex.exportExcel("活泼度剖析",headers,array);
}用到的类:

publicclassExportExcel
{

@SuppressWarnings("deprecation")
publicInputStreamexportExcel(Stringtitle,String[]headers,JSONArrayarray)
{
//声明一个事情薄
HSSFWorkbookworkbook=newHSSFWorkbook();
//天生一个表格
HSSFSheetsheet=workbook.createSheet(title);
//设置表格默许列宽度为15个字节
sheet.setDefaultColumnWidth((short)30);
//天生一个题目款式
HSSFCellStyletitleStyle=workbook.createCellStyle();
//设置这些款式
titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//天生一个题目字体
HSSFFontfont=workbook.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((short)12);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//把字体使用到以后的款式
titleStyle.setFont(font);
//天生内容款式
HSSFCellStylecontentStyle=workbook.createCellStyle();
contentStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
contentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
contentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
contentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
contentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
//天生内容字体
HSSFFontcontentFont=workbook.createFont();
contentFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
//把字体使用到以后的款式
contentStyle.setFont(contentFont);
//发生表格题目行
HSSFRowrow=sheet.createRow(0);
for(shorti=0;i<headers.length;i++)
{
HSSFCellcell=row.createCell(i);
cell.setCellStyle(titleStyle);
HSSFRichTextStringtext=newHSSFRichTextString(headers);
cell.setCellValue(text);
}
//天生内容行
for(inti=0;i<array.size();i++)
{
row=sheet.createRow(i+1);
JSONArrayarr=(JSONArray)array.get(i);
for(intj=0;j<arr.size();j++)
{
HSSFCellcell=row.createCell(j);
cell.setCellStyle(contentStyle);
HSSFRichTextStringrichString=newHSSFRichTextString(arr.get(j).toString());
HSSFFontfont3=workbook.createFont();
font3.setColor(HSSFColor.BLUE.index);
richString.applyFont(font3);
cell.setCellValue(richString);
}
}
//写进输入流
ByteArrayOutputStreambaos=newByteArrayOutputStream();
try
{
workbook.write(baos);//写进
}
catch(IOExceptione)
{
e.printStackTrace();
}
byte[]ba=baos.toByteArray();
ByteArrayInputStreambais=newByteArrayInputStream(ba);
try
{
baos.close();
}
catch(IOExceptione)
{
e.printStackTrace();
}
returnbais;
}
}检察本栏目更多出色内容:http://www.bianceng.cn/Programming/Java/
第三步设置struts.xml文件

<actionname="exportActiveExcel"class="activeCountAction"
method="exportActiveExcel">
<resultname="success"type="stream">
<paramname="contentType">application/vnd.ms-excel</param>
<paramname="contentDisposition">attachment;filename="${fileName}"</param>
<paramname="inputName">inputStream</param>
<paramname="bufferSize">4096</param>
</result>
</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))

冷月葬花魂 发表于 2015-2-10 01:47:32

所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。

山那边是海 发表于 2015-3-9 23:12:29

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

小魔女 发表于 2015-3-17 03:00:22

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧

因胸联盟 发表于 2015-3-23 17:05:34

吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
页: [1]
查看完整版本: 了解下JAVA的java中利用poi分离Struts 2来导出execl表格