Java 后台创建word 文档

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

                          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、创建临时文件夹是否存在
        File zipFolder = new File("F:\\压缩word");
        if(!zipFolder.exists()){
            zipFolder.mkdirs();
        }
        File wordFolder = new File("F:\\测试word");
        if(!wordFolder.exists()){
            wordFolder.mkdirs();
        }

        //2、声明变量
        String splitSymbol = "\\";
        byte[] byt = new byte[1024];
        int count = 0;
        //编写压缩后文件 流
        FileOutputStream zipOut = new FileOutputStream(zipFolder+splitSymbol+"myfigs.zip");

        //获得 zip的file对象
        File fileZip = new File(zipFolder+splitSymbol+"myfigs.zip");

        //3、判断用户选择是1个还是多个
        //获得类型
        String[] libList = request.getParameter("libSource").split(",");
        //迭代ID
        String[] idArray = request.getParameter("hidFavId").split(",");
        for(int i = 0;i<idArray.length;i++){
            //4、根据收藏类型 区分 访问数据库 获得word正文内容数据
            String wordText = getTextData(request,idArray[i],libList[i]);
            //3、新创建个word
            StringBuffer buffer = new StringBuffer(); //因为必须符合HTML格式 所以 必须添加html头
            buffer.append("<html><head><body>");
            buffer.append(wordText);
            buffer.append("</body></head></html>");
            //生成个文件名
            UUID uuid = UUID.randomUUID();
            File outFile = new File(wordFolder+splitSymbol+uuid.toString()+".doc");
            //将数据转成字节数组
            byte[] contentBytes = buffer.toString().getBytes();
            ByteArrayInputStream byteStream = new ByteArrayInputStream(contentBytes);
            //创建word文档
            POIFSFileSystem poifSystem = new POIFSFileSystem(); //暂时不知道什么意思
            DirectoryNode root = poifSystem.getRoot(); //同上
            root.createDocument("WordDocument",byteStream); //这个WordDocument 不可以进行修改 否则乱码
            FileOutputStream outStream = new FileOutputStream(outFile);
            poifSystem.writeFilesystem(outStream); //将流 输出到word文档上
            byteStream.close();
            outStream.close();

        }
        //5、利用压缩流 对 进行压缩
        ZipOutputStream zipOutStream = new ZipOutputStream(new BufferedOutputStream(zipOut)); //创建个压缩流 对应文件输出流 文件名及路径
        // 获得要压缩的文件夹
        File file = new File(wordFolder+splitSymbol);
        String[] fileList = file.list();
        for(String fileName : fileList){ //迭代要压缩文件夹 子内容
            FileInputStream inputStream = new FileInputStream(file+splitSymbol+fileName);
            //设置压缩文件打开后 显示每一项的名字
            ZipEntry zipentry = new ZipEntry(fileName);
            zipOutStream.putNextEntry(zipentry); //将压缩流和自项关联上
            while((count=inputStream.read(byt, 0, 1024))!=-1){
                zipOutStream.write(byt, 0, count);
            }
            inputStream.close();
        }
        zipOutStream.close();

        //7、文件下载
        response.reset();
        String fileName = new String("aggregate.zip".getBytes("UTF-8"),"iso-8859-1");
        response.setHeader("Content-Disposition", "attachment; filename="+fileName); //文件名
        response.setContentType("application/octet-stream; charset=utf-8");
        response.setHeader("Content-Length", Long.valueOf(fileZip.length()).toString()); //页面下载框文件后面()大小
        response.setCharacterEncoding("UTF-8");
        ServletOutputStream outputStream = response.getOutputStream();
        byte[] byteArray = FileUtils.readFileToByteArray(fileZip); //获得要下载的文件字节数组
        //8、下载之前 将临时目录删除
        File[] zipFiles = zipFolder.listFiles();
        File[] wordFiles = wordFolder.listFiles();
        for(File zip : zipFiles){
            zip.delete();
        }
        for(File word : wordFiles){
            word.delete();
        }
        zipFolder.delete();
        wordFolder.delete();
        outputStream.write(byteArray); //利用输出流 输出
        outputStream.flush();

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

时间: 2024-10-27 12:54:17

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

C#程序通过模板自动创建Word文档

原文:C#程序通过模板自动创建Word文档 引言:这段时间有项目要用到c#生成Word文档,通过网络查找到很多内容,但是功能上满足不了个人需求,于是决定借助网友们已经写好的代码,加以修改完善,以便于更好的交流和以后相似问题可以迅速的解决! 备注:本文用到的相关文件,在日志结尾提供下载 ? 第一步.项目基础--引用的添加 ?? 注意:此处要查找的"Microsoft.Office.Interop.Word.dll"版本必须为"11.*.*.*","*&quo

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

本文实例讲述了C#实现通过模板自动创建Word文档的方法,是非常实用的技巧.分享给大家供大家参考.具体实现方法如下: 引言:前段时间有项目要用c#生成Word格式的计算报告,通过网络查找到很多内容,但是都很凌乱,于是自己决定将具体的步骤总结整理出来,以便于更好的交流和以后相似问题可以迅速的解决! 现通过具体的示例演示具体的步骤: 第一步,制作模板 1.新建一个文档,设置文档内容. 2.在相应位置插入书签:将鼠标定位到要插入书签的位置,点击"插入">"书签",弹

Java添加水印到Word文档

水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法,即 文本水印 图片水印使用工具:Free Spire.Doc for Java (免费版)Jar导入:方法1:通过官网下载jar文件包.下载后,解压文件,并将lib文件夹下的Spire.Doc.jar文件导入java程序.参考如下导入效果:方法2:通过maven导入.参考导入方法. Java代码示例(供参考) [示例1]添加文本水印 import co

利用POI操作不同版本word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最常用的技术就应该是POI了,在这里本人就不多说究竟POI是什么和怎么用了.先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据并且保存到数据库中这些类似的操作,由于业务上的需要需要利用POI去读取word中的图片,并且去把图片去保存为一个file文件.查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本(.doc或者是.docx结尾)对于文件中所含图片的操作方式,希望

利用POI操作不同版本号word文档中的图片以及创建word文档

我们都知道要想利用java对office操作最经常使用的技术就应该是POI了,在这里本人就不多说到底POI是什么和怎么用了. 先说本人遇到的问题,不同于利用POI去向word文档以及excel文档去写入数据和向外导出数据而且保存到数据库中这些类似的操作,因为业务上的须要须要利用POI去读取word中的图片,而且去把图片去保存为一个file文件.查了Apache公司提供的api帮助文档,再网友的一些线索,本人也总结了几中对不同word版本号(.doc或者是.docx结尾)对于文件里所含图片的操作方

[转载]Java动态填充word文档并上传到服务器

一. 需求背景 在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式是jacob, 但是局限于windows平台,往往许多JAVA程序运行于其他操作系统,在此不讨论该方案.二是POI. 但是它的excel处理还凑合, word模块还局限于读取word的文本内容,写word文件的功能就更弱:还有一个要命的地方,处理doc格式和处理docx格式的类几乎完全不同,要分开针对不同的格式写不同的

java freemark生成word文档

1.下载freemarker-2.3.19.jar 2.把要填充的内容用  ${title},${no}代替 3.用word 打开,保存为2003xml 4.打开生成xml文件,看下有没有把表达式  ${title},${no}   分开,如果分开了,那么要合并,最后保存为ftl文件 5.代码 public class DocUitlsDemo { private Configuration configuration=null; public DocUitlsDemo(){ configura

《《《java代码读取word文档》》》

参考网址 http://www.2cto.com/kf/201701/584974.html 1 package com.demo.test; 2 3 import org.apache.poi.hwpf.extractor.WordExtractor; 4 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileNotFoundException; 8 import java.io.IOExce

.Net C# 使用NPIOI创建Word文档

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Text; using NPOI; using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.XWPF.UserM