jsp按格式导出doc文件

原理:doc文件其实可以保存为xml文件,该xml文件用字符串表示了doc文件的表现形式,我们只需要用Java将那些要填的内容替换掉然后下载给客户就行了。

1.首先是按照你的文档填写好数据。

2.将文档另存为xml文件,然后编辑该xml文件,将填好的内容用某种格式替换,如:将名字张三替换成${name}

3.读取文件,将文件中的${name}替换成真正的名字。

4.下载。

接下来看代码:

首先是那个转换类

package com.my.util;

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.Map;

public class DowloadDocByTemplate {

    public InputStream dowload(String templatePath,Map map) throws IOException{
        
        File file = new File(templatePath);
        StringBuffer sb = new StringBuffer();
            BufferedReader br;
                br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));
                String s;
                while ((s = br.readLine()) != null) {
                    sb.append(s);
                    
                }
                br.close();
                 s = sb.toString();
                    Iterator<String> keys = map.keySet().iterator();
                    while(keys.hasNext()) {
                        String key = (String) keys.next();
                        s=s.replace(key, (String) map.get(key));
                 }

                   return  new ByteArrayInputStream(s.getBytes("UTF-8"));
    }
}
    

然后是action:


    /**
     * 检查下载权限
     * @return
     */
    public String downLoadcheck(){
        
        return SUCCESS;
    }
    
    public String getTargetFileName(){
        
        return "zengguoqg.doc";
    }
    public InputStream getInputStream(){
        //ExportToWordUtil etw = new ExportToWordUtil();
        StringBuffer carnumber = new StringBuffer("<w:tr w:rsidR='00000000'> <w:trPr> <w:trHeight w:hRule='exact' w:val='482'/> </w:trPr>");
        String s1 = "<w:tc><w:tcPr><w:tcW w:w=\"236\" w:type=\"dxa\"/></w:tcPr><w:p w:rsidR=\"00000000\" w:rsidRDefault=\"009F38EE\">" +
                "<w:pPr><w:rPr><w:rFonts w:hint=\"eastAsia\"/></w:rPr></w:pPr><w:r>" +
                        "<w:rPr><w:rFonts w:hint=\"eastAsia\"/></w:rPr><w:t>";
        String number = "450981199202073518";
        char[] ch = number.toCharArray();
        for(int i =0;i<ch.length;i++){
            carnumber.append(s1).append(ch[i]).append("</w:t></w:r></w:p></w:tc>");
            
        }
        carnumber.append("</w:tr>");
        Map<String,String> map = new HashMap();
        map.put("${name}","曾强");
        map.put("${sex}","男");
        map.put("${writeDate}", "2014.1.2");
        map.put("${cardNumber}", "1100106");
        map.put("${personNumber}", carnumber.toString());
        map.put("${birthday}", "2014.1.2");
        map.put("${Education}", "本科");
        map.put("${marride}", "未婚");
        map.put("${comeFrom}", "广西");
        map.put("${nation}", "汉族");
        map.put("${ResidenceAddress}", "广西");
        map.put("${PostalCode}", "543002");
        map.put("${QQ}", "1104566175");
        map.put("${job}", "软件工程师");
        map.put("${politicalStatus}", "政治面貌");
        map.put("${GraduateSchool}", "学院");
        map.put("${professional}", "软件工程");
        map.put("${beginWorkTime}", "2014.1.2");
        map.put("${bankCarNumber}", "622709");
        map.put("${emergencyContactPerson}", "曾强");
        map.put("${relationship}", "同学");
        map.put("${ummoveTelephone}", "0774133");
        map.put("${mobilePhone}", "1350335");
        map.put("${adreess}", "广西");
        map.put("${mainExperience}", "无工作");
        map.put("${favoriteAndGoodAt}", "喜欢打篮球");
        
        
        String path = ServletActionContext.getServletContext().getRealPath("/fileTemplate/renyuandengjibiao2.xml");
        System.out.println(path);
        
        //return  etw.export(path, "test.xml", map, "out.doc");
        try {
            return  new DowloadDocByTemplate().dowload(path, map);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }
    
}

最后是Strut配置下载:

 <package name="dowload" extends="struts-default">
       <action name="dowload" class="zhaopingAction" method="downLoadcheck">
       <result name="success" type="stream">
          <param name="contentType">application/ZIP</param><!--默认为 text/plain-->        
          <param name="inputName">inputStream</param>   
          <param name="contentDisposition">filename="${targetFileName}"</param>        
         <param name="bufferSize">4096</param><!-- 输出时缓冲区的大小 -->        
       </result>
       </action>

完了,就这些了。xml文件我放在WebRoot/fileTemplate/renyuandengjibiao2.xml。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值