如何把页面数据另存为EXCEL,并且可以分多SHEET存放的方法

近一段时间要出一些报表,其中用户提出了一个关键的问题,就是要把页面上的数据另存为EXCEL,现在说说我们的做法:

第一种方法:直接在另存的时候,设置contenttype为EXCEL,即把页面保存为EXCEL的名字
response.setHeader("Content-type","application/xls");
response.setHeader("Content-Disposition", "attachment;filename=booking.xls");
response.setHeader("Content-Type", "application/vnd.ms-excel; charset=UTF-8");
request.setCharacterEncoding("utf-8");
下面是基于HTML的页面内容,如一个基于TABLE的表格数据,这样完全可以满足需要,但注意的是,不能把一个页面内的图片、脚本和样式等带进来,因此如果TABLE里面有背景之类的东东要拿掉,是一个干净整齐的数据表格,如果有颜色的话,可以加粗,这些东东用EXCEL打开没有问题。
此方法可以简单的解决我们把一个页面数据转存为EXCEL,也是较简单的方法,但是不能够存为多个SHEET
问题就是用户需要批量导出数据,按月分SHEET列,于是想到了下面的方法。

第二种方法:按照XML格式保存数据(我们可以用EXCEL打开个表格文件,另存为XML格式后可以看到这样的格式)
我们按照XML的格式生成我们要另存的文件,举例如下:


xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">

User
User
2009-03-20T02:15:12Z
Microsoft
12.00


7815
14880
240
75
False
False



x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="13.5">

1111
>2211
333


111
33


11
33


111
33


11
333






上述代码另存为一个xml或是xls文件,通过EXCEL打开,就可以看到直观的效果,其中的worksheet item就是我们所说的SHEET,table是我们的表格数据,只要按照此种格式生成一个文件,就OK了,这种方法比较简单可行,只是在跨行和跨列的计算上不同于HTML的跨行跨列,一定要注意,并且大小写敏感,但是存起来比较方法,能够满足基于页面数据的按照SHEET多次导出,做了个简单的页面表格导成XML TABLE的例子,可以看看效果

第三种方法:即用Java Excel API进行数据的存储,此种方法网上介绍的较多,就不做详细的解释了,我本人还是对第二种方法感兴趣

上述方法供大家参考,不妥之处多请指正

你可能感兴趣的:(如何把页面数据另存为EXCEL,并且可以分多SHEET存放的方法)