1.action中需要有一个InputStream 对象,并且该对象要有get()方法
2.在action的方法中给下载的文件定义一个名字,比如:xlsName = "统配报表.xls";
3.给inputstream对象赋值,即封装一个方法getExcel(),这个方法的返回值是inputstream类型 ,inputstream对象=getExcel();
4,在getExcel()方法中创建excel和行、列并对他们复制,具体操作如下:
a.创建一个excel HSSFWorkbook workbook = new HSSFWorkbook();
b:创建一个sheet HSSFSheet sheet = workbook.createSheet("统配订货明细");
c.设置sheet的列宽sheet.setDefaultColumnWidth(35);
d. 给这个Excel的cell创建一个style HSSFCellStyle style = workbook.createCellStyle(); 并给这个style设置前景色,边框等,具体参考
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCellStyle.html,
e.给这个excel创建一个字体 HSSFFont font = workbook.createFont();并给字体设置大小,颜色等,并把这个字体设置给这个样式
f.创建row和cell HSSFRow dg = sheet.createRow(0); HSSFCell cell0 = dg.createCell(0);并给cell设置样式、赋值
g.遍历从数据库查出来的数据,
h.创建输入流 OutputStream bos = new ByteArrayOutputStream();// 字节数组流
i.用输入流创建输出流ByteArrayInputStream bis = new ByteArrayInputStream(((ByteArrayOutputStream) bos).toByteArray()); return bis;
注意事项:
struts2配置文件中配置下载方法
<result name="downAllExcel" type="stream">
<param name="contentType">application/vnd.ms-excel;charset=iso-8859-1</param>
<param name="inputName">downAllExcel</param>
<param name="contentDisposition">/attachment;filename="${xlsName}"</param>
</result>