jsp导出word 及mht 转码问题

最近做了一个资费查询模块,里面涉及将资费信息导出Word文档和Excel文档,

先说说导出Word文档:


其实就是把响应的类型设为application/msword,然后把内容输出到这个文件就行了

第一步:

先在桌面上新建一个word文档,双击打开,然后另存为.htm文件,会产生一个以.htm结尾的文件

第二步:
把.htm文件扩展名改为.jsp文件,此时它就是一个有word排版格式的jsp文件了,
然后在这个文件前加上:<%@ page contentType="application/msword;charset=gbk"%>
再引入其他相关的类

第三步:把jsp文件中,需要动态显示的东西改成为java代码就行了,通常就会对一个集合或直接就是结果集进行遍历

如:访问

http://localhost:8080/jxtelecom/exportWord.jsp

出现:

不支持,导出只读文件,如果谁解决了,请给我留言,谢谢。
补充:解决乱码问题。
mht文件中,可以看到汉字的编码变了,如“中国”变 “&#20013;&#22269;”这种其实 是unicode码的10进制表示,我们在java中一般看到的unicode码都是16进制的。主要写个10进制unicode和16进制unicode转换程序,以后可以参考一下,这个对于这次项目中查询数据并根据 模板 导出 word中,解决了几周来的乱码问题。 public class TestUnicode {
 /**
  * 二期导出word文档专用转码方法
  * 方法说明:把中文 转为 mht专用的 uncode 10进制编码
  * @author peijianwen
  * @since 2009-12-01
  * @return String
  */
 public static String convertUncode10(String s) {
  String conStr = "";
  //  转码uncode 10进制        
  for(int i = 0;i<s.length();i++){
   char a  = s.charAt(i);
   conStr += "&#"+ (int)a+";";   //将中文转成10进制的表示
  }
  return conStr;
 }   
 public static void main(String[] args) {
    //将中文转成16进制的表示
    System.out.println("/u" + Integer.toHexString('中'));    //“/u4e2d”
    System.out.println("/u" + Integer.toHexString('中' & 0xffff));    //“/u4e2d”
    //将中文转成10进制的表示
    System.out.println("&#" + (int)'中' + ";");    //&#20013;
    System.out.println("&#" + ('中' & 0xffff) + ";");    //&#20013;
   
    //将10/16进制的表示转成汉字
    System.out.println((char) 20013);    //中
    System.out.println((char) 0x4e2d);    //中
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值