struts2利用stream直接输出excel -凯发k8网页登录

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  凯发k8网页登录-凯发天生赢家一触即发官网 :: 凯发k8网页登录首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
posted on 2008-06-23 20:14 云自无心水自闲 阅读(10676) 评论(15)     所属分类: java心得体会struts2

 

在利用网页展示查询结果,经常会遇到要求导出成excel的需求。采用这种方法可以定制输出的格式和内容(还不支持合并单元格和公式),生成真正的excel格式(不是csv)的excel。
一、struts.xml

    "-//apache software foundation//dtd struts configuration 2.0//en"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
  

   

   
       
               
                    application/vnd.ms-excel   
                    excelstream                  
                    filename="standard.xls"
                    1024
               

       

   

二、struts2的 action

package demo;
public class excelaction {
    private inputstream excelstream; // 需要生成getter和setter

    public string execute() throws exception {
        stringbuffer excelbuf = new stringbuffer();
        excelbuf.append("bookname").append("\t").append("year").append("\t").append("author").append("\n");
        excelbuf.append("thinking in java").append("\t").append("2001").append("\t").append("eckel").append("\n");
        excelbuf.append("spring in action").append("\t").append("2005").append("\t").append("rod").append("\n");
        string excelstring = excelbuf.tostring();
        logger.debug("result excel string: " excelstring);
        excelstream = new bytearrayinputstream(excelstring.getbytes(), 0, excelstring.length());
        return "excel";
    }

    // getter and setter
    ...
}

三、jsp页面

<%@ taglib prefix="s" uri="/struts-tags"%>


 
 
 

 

   
      
   

 




评论

# re: struts2利用stream直接输出excel  回复     

2008-06-23 21:54 by
是非常实用的,还有xml的输出。

# re: struts2利用stream直接输出excel  回复     

2008-06-25 18:08 by
@云自无心水自闲
挑一下刺:你这样输出的实际上是一个tab和回车符分隔的纯文本文件哦。尽管能够输出数据,但无法输出格式(比如使用指定的字体)

# re: struts2利用stream直接输出excel[未登录]  回复     

2008-09-23 16:04 by
为什么我在控制台上打出了数据,却没有输出到 excel 呢?

# re: struts2利用stream直接输出excel  回复     

2008-09-23 21:02 by
@yang
可能是你的struts.xml没有配置好,能贴一下你的配置吗?

# re: struts2利用stream直接输出excel  回复     

2008-09-23 21:04 by
@雨奏
如果要真正输出excel,恐怕要使用poi之类的了。
目前这样的解决方法,能够在客户端将数据填充到excel软件中,基本上可以满足初步的要求了。

# re: struts2利用stream直接输出excel[未登录]  回复     

2008-09-25 10:47 by
我的struts.xml:


application/vnd.ms-excel
excelstream
filename="stat.xls"
1024



输出到控制台上的 excelstring 能清晰地看到数据

# re: struts2利用stream直接输出excel[未登录]  回复     

2008-09-25 10:50 by
lz: 能留个凯发天生赢家一触即发官网的联系方式吗?

# re: struts2利用stream直接输出excel  回复     

2008-09-26 10:43 by
@yang

usherlight@sina.com
如果方便的话,可以看一下你的action源码吗?

# re: struts2利用stream直接输出excel[未登录]  回复     

2008-09-26 12:36 by
已经发到你的邮箱,我在csdn加你了

# re: struts2利用stream直接输出excel  回复     

2009-01-14 10:28 by
lz,我使用了 你的这个方法出了一些奇怪的问题!
我控制台的输出是:
用户编号 用户名 请假日期 开始时间 时间长度 请假类别
zhaojiangmin 赵江民 2009-01-05 08:00:00 3 婚嫁
3 李四 2008-12-04 12:00:00 6 事假
n2000 郭晶晶 2008-12-01 08:00:00 12 病假
abc 成龙 2008-12-01 08:00:00 1 病假
abc 成龙 2008-12-25 08:00:00 1 事假
3 李四 2008-12-02 08:00:00 1 病假
2 张三 2008-12-10 08:00:00 1 病假
2 张三 2008-12-01 08:00:00 12 病假
2 张三 2008-12-18 12:00:00 12 病假


但是 ,我的excel 缺少 最后1行的 最后2个字段的 数据

# re: struts2利用stream直接输出excel  回复     

2009-01-16 06:34 by
奇怪,你查查最后一行最后2个字段数据的分隔符是不是tab?

# re: struts2利用stream直接输出excel  回复     

2009-06-23 15:17 by
我也和你遇到了相同的问题,总是到最后一点打印不出来,原因是我构造流时,
excelstream = new bytearrayinputstream(excelstring.getbytes(), 0,
excelstring.length);
换成:
excelstream = new bytearrayinputstream(excelstring.getbytes(), 0,
excelstring.getbytes().length);
就好了,
留在这里供以后出错的人来参考。

# re: struts2利用stream直接输出excel  回复     

2009-06-23 20:19 by
@linda
谢谢!

# re: struts2利用stream直接输出excel  回复     

2011-07-20 14:36 by
lz,加个qq吧。。

1047180392

# re: struts2利用stream直接输出excel  回复     

2016-04-25 17:53 by
dsaasdsadsadd as

只有注册用户后才能发表评论。


网站导航:
              
 
网站地图