当前位置: 移动技术网 > IT编程>开发语言>Java > jsp按格式导出doc文件实例详解

jsp按格式导出doc文件实例详解

2017年12月08日  | 移动技术网IT编程  | 我要评论

重庆两江新区网,仇和老婆,表达志向的诗句

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。

如有疑问,请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网