---恢复内容开始---

                          Java 后台创建 word 文档

  自己总结  网上查阅的文档

  分享POI 教程地址:http://www.tuicool.com/articles/emqaEf6

  方式一、(正常创建  适合短文本 无格式要求Word文档)

  1. XWPFDocument doc = new XWPFDocument(); //创建word文件
  2. XWPFParagraph p1 = doc.createParagraph(); //创建段落
  3. XWPFRun r1 = p1.createRun(); //创建段落文本
  4. r1.setText("hello world"); //设置文本
  5. FileOutputStream out = new FileOutputStream("D:\\simple.docx"); //创建输出流
  6. doc.write(out); //输出
  7. out.close(); //关闭输出流

  方式二、(适合有格式要求的Word文档。)

Demo code is my Working code  这段code  是文件下载功能 对选中的项 进行数据读取 并且生成word文档  并且压缩成zip格式 下载

  1. //1、创建临时文件夹是否存在
  2. File zipFolder = new File("F:\\压缩word");
  3. if(!zipFolder.exists()){
  4. zipFolder.mkdirs();
  5. }
  6. File wordFolder = new File("F:\\测试word");
  7. if(!wordFolder.exists()){
  8. wordFolder.mkdirs();
  9. }
  10.  
  11. //2、声明变量
  12. String splitSymbol = "\\";
  13. byte[] byt = new byte[1024];
  14. int count = 0;
  15. //编写压缩后文件 流
  16. FileOutputStream zipOut = new FileOutputStream(zipFolder+splitSymbol+"myfigs.zip");
  17.  
  18. //获得 zip的file对象
  19. File fileZip = new File(zipFolder+splitSymbol+"myfigs.zip");
  20.  
  21. //3、判断用户选择是1个还是多个
  22. //获得类型
  23. String[] libList = request.getParameter("libSource").split(",");
  24. //迭代ID
  25. String[] idArray = request.getParameter("hidFavId").split(",");
  26. for(int i = 0;i<idArray.length;i++){
  27. //4、根据收藏类型 区分 访问数据库 获得word正文内容数据
  28. String wordText = getTextData(request,idArray[i],libList[i]);
  29. //3、新创建个word
  30. StringBuffer buffer = new StringBuffer(); //因为必须符合HTML格式 所以 必须添加html头
  31. buffer.append("<html><head><body>");
  32. buffer.append(wordText);
  33. buffer.append("</body></head></html>");
  34. //生成个文件名
  35. UUID uuid = UUID.randomUUID();
  36. File outFile = new File(wordFolder+splitSymbol+uuid.toString()+".doc");
  37. //将数据转成字节数组
  38. byte[] contentBytes = buffer.toString().getBytes();
  39. ByteArrayInputStream byteStream = new ByteArrayInputStream(contentBytes);
  40. //创建word文档
  41. POIFSFileSystem poifSystem = new POIFSFileSystem(); //暂时不知道什么意思
  42. DirectoryNode root = poifSystem.getRoot(); //同上
  43. root.createDocument("WordDocument",byteStream); //这个WordDocument 不可以进行修改 否则乱码
  44. FileOutputStream outStream = new FileOutputStream(outFile);
  45. poifSystem.writeFilesystem(outStream); //将流 输出到word文档上
  46. byteStream.close();
  47. outStream.close();
  48.  
  49. }
  50. //5、利用压缩流 对 进行压缩
  51. ZipOutputStream zipOutStream = new ZipOutputStream(new BufferedOutputStream(zipOut)); //创建个压缩流 对应文件输出流 文件名及路径
  52. // 获得要压缩的文件夹
  53. File file = new File(wordFolder+splitSymbol);
  54. String[] fileList = file.list();
  55. for(String fileName : fileList){ //迭代要压缩文件夹 子内容
  56. FileInputStream inputStream = new FileInputStream(file+splitSymbol+fileName);
  57. //设置压缩文件打开后 显示每一项的名字
  58. ZipEntry zipentry = new ZipEntry(fileName);
  59. zipOutStream.putNextEntry(zipentry); //将压缩流和自项关联上
  60. while((count=inputStream.read(byt, 0, 1024))!=-1){
  61. zipOutStream.write(byt, 0, count);
  62. }
  63. inputStream.close();
  64. }
  65. zipOutStream.close();
  66.  
  67. //7、文件下载
  68. response.reset();
  69. String fileName = new String("aggregate.zip".getBytes("UTF-8"),"iso-8859-1");
  70. response.setHeader("Content-Disposition", "attachment; filename="+fileName); //文件名
  71. response.setContentType("application/octet-stream; charset=utf-8");
  72. response.setHeader("Content-Length", Long.valueOf(fileZip.length()).toString()); //页面下载框文件后面()大小
  73. response.setCharacterEncoding("UTF-8");
  74. ServletOutputStream outputStream = response.getOutputStream();
  75. byte[] byteArray = FileUtils.readFileToByteArray(fileZip); //获得要下载的文件字节数组
  76. //8、下载之前 将临时目录删除
  77. File[] zipFiles = zipFolder.listFiles();
  78. File[] wordFiles = wordFolder.listFiles();
  79. for(File zip : zipFiles){
  80. zip.delete();
  81. }
  82. for(File word : wordFiles){
  83. word.delete();
  84. }
  85. zipFolder.delete();
  86. wordFolder.delete();
  87. outputStream.write(byteArray); //利用输出流 输出
  88. outputStream.flush();

---恢复内容结束---

Java 后台创建word 文档的更多相关文章

  1. [java,2017-05-04] 创建word文档

    package test; import java.text.SimpleDateFormat; import java.util.Date; import com.aspose.words.Data ...

  2. C#实现通过模板自动创建Word文档的方法

    原文地址:http://www.jb51.net/article/55332.htm   本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法 ...

  3. 在C#中创建word文档

    在下面文档中  首先引用word组件:Microsoft.Office.Interop.Word 在头文件中写上 using Word = Microsoft.Office.Interop.Word; ...

  4. OpenXml SDK 2.0 创建Word文档 添加页、段落、页眉和页脚

    using (WordprocessingDocument objWordDocument = WordprocessingDocument.Create(@"C:\********.doc ...

  5. Python批量创建word文档(2)- 加图片和表格

    Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.要求在文档开始处给出banner条,价格日期等用表格表示.最后贴上自己的联系 ...

  6. Python批量创建word文档(1)- 纯文字

    Python创建word文档,任务要求:小杨在一家公司上班,每天都需要给不同的客户发送word文档,以告知客户每日黄金价格.最后贴上自己的联系方式.代码如下: 1 ''' 2 #python根据需求新 ...

  7. 使用Freemarker创建word文档

    最近做一个项目,本来是直接在网页上查看文本信息,然后给客户直接打印的,但是发现也许是浏览器还是打印机的原因,总之,有个客户打印出来的格式始终与其他的不同,没办法,最后想到了直接将数据库中的信息生成一个 ...

  8. [转载]Java动态生成word文档(图文并茂)

    很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...

  9. [原创]Java动态生成word文档(图文并茂)

    很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功 ...

随机推荐

  1. Linux 安装SVN服务器 (转)

    一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...

  2. Log4j配置文件内容详解

    .Log4j的优点 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送地:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控 ...

  3. 搭建MySQL高可用负载均衡集群

    1.简介 使用MySQL时随着时间的增长,用户量以及数据量的逐渐增加,访问量更是剧增,最终将会使MySQL达到某个瓶颈,那么MySQL的性能将会大大降低.这一结果也不利于软件的推广. 那么如何跨过这个 ...

  4. HTML解析器BeautifulSoup

    BeautifulSoup是Python的一个库,可解析用urllib2抓取下来的HTML 1.Beautiful Soup 安装 可以利用 pip 来安装,在Python程序中导入 pip inst ...

  5. 【zzulioj 2135】 这里是天堂!

    先考虑当前情况可行与否: 如果当a>n或者b>m时是绝对不行的,概率为0: 当a+b<m+n时,k一定等于a+b,否则概率为0: 当a+b==m+n时,k>=a+n,否则概率为 ...

  6. C++小技巧之CONTAINING_RECORD

    CONTAINING_RECORD Containing record是一个在C++编程中用处很大的一种技巧,它的功能为已知结构体或类的某一成员.对象中该成员的地址以及这一结构体名或类名,从而得到该对 ...

  7. html 压缩工具 html-minifier

    https://github.com/kangax/html-minifier#options-quick-reference 1.参数列表 option Description Default re ...

  8. 接触响应式-css3-media判断屏幕分辨率

    // IE6.7.8不支持css3    使用响应式一般用bootstrap框架(IE8使用时须引用Respond.js)而不用原生JS 外联式: <link type="text/c ...

  9. Ubuntu中文本地化后字体改变

    ubuntu中文本地化后会安装2个字体 fonts-arphic-ukai fonts-arphic-uming 找到这两个字体删除之.. sudo apt- get remove fonts-arp ...

  10. 实时监听input标签输入 实时监听文本框输入 避免中文输入法无法触发onkeyup事件的问题

    前言: 对于实时监听输入,这种需求大多数都是用于一个联想字提醒,智能提醒.大家都知道onkeydown,onkeypress,onkeyup的在监听中文输入法或者右键粘贴的时候都存在一些弊端,不是那么 ...