jsp导出Excel的简单方式 ContentType为Excel格式

来源:互联网 发布:java访问jenkins 编辑:程序博客网 时间:2024/05/30 04:54
-----------摘自百度文库----------------

<html xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office"/>


2009-08-07
JSP应用导出Excel报表的简单实现以及中文乱码彻底解决(HTML) 
Web应用导出Excel报表的简单实现(HTML) 
在Web应用中,很多数据经常要导出成Excel文档。用专门的生成真正的Excel文档的方式比较复杂,不太好用。所以经常用一种简单的方式来实现,即将报表保存为HTML格式,然后用Excel打开。 
实现方式: 
第一步,用JSP实现HTML版本的报表 
第二步,在该JSP页面头部设置response的ContentType为Excel格式 


引用
<% response.setContentType("application/vnd.ms-excel;charset=GBK"); %> 




中文问题: 
查看源代码时发现JSP文件中写死的中文为乱码,则在JSP文件头部添加一行 


引用
<%@ page contentType="text/html; charset=gb2312" %>
查看源代码时发现文字为中文,但是用Excel打开为乱码则在<html>与<head>中加入 


引用
<meta http-equiv="Content-Type" content="text/html; charset=GBK">


用Servlet实现也是类似的处理方法。 


实现样例:Test.jsp 




Java代码 
1.<%@ page contentType="text/html; charset=GBK" %>   
2.<% response.setContentType("application/vnd.ms-excel;charset=GBK"); %>   
3.<HTML>   
4.<meta http-equiv="Content-Type" content="text/html; charset=GBK">   
5.<head><title>Test</title></head>   
6.<body>   
7.<TABLE borderColor=#111111 cellSpacing=0 cellPadding=2 width=1200 align=center border=1>   
8.<TR>   
9.<TD align=middle width="10%" height=20 rowSpan=2>项目 </TD>   
10.<TD align=middle width="2%" height=20 rowSpan=2>计量单位 </TD>   
11.<TD align=middle width="4%" height=20>满期赔付率 </TD>   
12.</TR>   
13.</TABLE>   
14.</body>   
15.</HTML>   


<meta http-equiv="Content-Type" content="text/html; charset=GBK">






//解释,为何wps打开正常,office-excel打开乱码


生成EXCEL乱码2008-05-24 20:38去年做了一个小查询系统,使用的平台是FreeBSD+apache+php+mysql。由于数据中可能存在生僻字,所以数据库编码使用了我以前常使用的GBK编码。调用数据前首先set names gbk声明,这样显示数据正常。后来需要把数据生成为excel文件,这时问题出来了:php生成的excel文件中所有中文字符都是乱码。


上网查询,说是在head中注明编码,问题依旧,但奇怪的是生成的文件用wps打开是没有问题的,但总不能让使用单位也安装wps吧,虽然那是国产的,而且政府采购的。最后没有办法,只好生成csv文件,这样乱码问题解决了,但是下载下来的文件不能直接用excel打开,而且排版也麻烦。


清明节放假,恰好程序数据变动,于是一并想解决一下这个问题。试了几个编码,差别不大。周一回到单位突然想起既然wps能够打开,那么证明是微软是不自动检测编码而是强制使用自己的编码,而微软最常用的编码是gb2312,于是用EMS的mysql管理软件重新生成了一个数据表,编码选择那里果然发现里面也有gb2312编码选择,导入数据库后,把GBK换成gb2312,这样生成的excel文件中汉字乱码问题解决了。


晚上回家,准备把原先数据库编码改为gb2312,但一是偷懒,而是担心转换过程中数据出问题,便在没有修改字符编码的情况下,只是把set names gb2312声明,试着生成excel文件,哈哈,同样没有问题!


到网上搜索了一下:


GBK: 汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号, 21003个汉字及提供了1894个造字码位。 Microsoft简体版中文Windows 95就是以GBK为内码,又由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。


GB码,全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码, Windows 95/98则以GBK为基本汉字编码、但兼容支持GB2312。GB码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。


GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。


估计正是大陆制订这个关节出了问题,微软正是抓住自己的标准才会出现wps识别而excel不识别的情况。看来标准之争是不得不争啊。
 




  
0 0