JAVA POI实现Word填充(DOC)

这种填充技术后的文件是doc格式的可以下载word中的文本样式。

  1. 导入两个必须的Jar包:poi-3.10.1.jar和poi-scratchpad-3.10.1.jar

  2. 如果报filesystem错误,应该是引用的这两个包的版本不一样,所以一定要保持版本一致。

  3. 直接将内容导出成DOC文件:

     /**     * 导出Word文件

         * @param destFile 目标文件路径

         * @param fileContent 要导出的文件内容

         */public static int exportDoc(String destFile,String fileContent){

    try {

    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileContent.getBytes("UTF-8"));

    POIFSFileSystem fileSystem = new POIFSFileSystem();

    DirectoryEntry directory = fileSystem.getRoot();

    directory.createDocument("WordDocument", byteArrayInputStream);

     FileOutputStream fileOutputStream = new FileOutputStream(destFile);

    fileSystem.writeFilesystem(fileOutputStream);

    byteArrayInputStream.close();

    fileOutputStream.close();

     return 1;

    } catch (IOException e) {return 0;

     }

    }

    这个导出只是对文字Word做的导出。

    用法:

    exportDoc("C:\\12.doc", "exportDoc导出Word");

    JAVA POI实现Word填充(DOC)_第1张图片

  4. 使用模板导出Doc的话需要先定义好模板内容。

    例如模板内容如下图所示。

    JAVA POI实现Word填充(DOC)_第2张图片

  5. /**     * 读取word模板并替换变量

         * @param templatePath 模板路径

         * @param contentMap 要替换的内容

         * @return word的Document

         */

        public static HWPFDocument replaceDoc(String templatePath, Map contentMap) {

            try {

                // 读取模板

    FileInputStream tempFileInputStream = new FileInputStream(new File(templatePath));

    HWPFDocument document = new HWPFDocument(tempFileInputStream);

                // 读取文本内容

                Range bodyRange = document.getRange();

                // 替换内容

                for (Map.Entry entry : contentMap.entrySet()) {

                    bodyRange.replaceText("${" + entry.getKey() + "}", entry.getValue());

                }

                return document;

            } catch (Exception e) {

                return null;

            }

        }

  6. 调用方法如下:

    Map contentMap=new HashMap();

    contentMap.put("name", "飞翔家族");

    contentMap.put("age", "123");

    contentMap.put("email", "[email protected]");

    HWPFDocument document = replaceDoc("C:\\template.doc", contentMap);

            if(document != null){

             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

                try {

                    document.write(byteArrayOutputStream);

                    OutputStream outputStream = new FileOutputStream(destFile);

                    outputStream.write(byteArrayOutputStream.toByteArray());

                    outputStream.close();

                } catch (IOException e) {                            }

            }

  7. 使用模板导出DOC文件我们还可以使用其他的方法。

    我们还是先需要制作好DOC模板文件,然后另存为XML文件。

    使用velocity,将数据填充,导出成DOC文件。

  8. 这里介绍的都是最简单的方法,直接导出文本Word,如果要导出复杂一点的Word,请再查阅。
     

  9. 读取doc文件的内容JAVA POI实现Word填充(DOC)_第3张图片

你可能感兴趣的:(java,开发语言,p2p)