Java如何导出word呢?

欣喜 Java经验 发布时间:2024-01-26 09:15:54 阅读数:6972 1
下文笔者讲述java代码导出word的方法分享,如下所示

Java导出word的实现思路

 
1.Jacob是Java-COM Bridge
       它在Java与微软的COM组件之间构建一座桥梁
       使用Jacob实现在Java平台上对微软Office的COM接口进行调用

  优点:调用微软Office的COM接口,生成的word文件格式规范
  缺点:服务器只能是windows平台,不支持unix和linux
                且服务器上必须安装微软Office

2.Apache POI包括一系列的API
       它可操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件
       可以通过这些API在Java中读写Excel、Word等文件

  优点:跨平台支持windows、unix和linux
  缺点:相对与对word文件的处理来说
                 POI更适合excel处理
                 对于word实现一些简单文件的操作凑合
                 不能设置样式且生成的word文件格式不够规范

3.Java2word是一个在java程序中调用 MS Office Word 文档的组件(类库)
       该组件提供了一组简单的接口
       以便java程序调用他的服务操作Word文档
       
      这些服务包括
           打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格
           在书签处插入文字、插入图片、插入表格等 

  优点:足够简单,操作起来要比FreeMarker简单的多
  缺点:没有FreeMarker强大,不能够根据模版生成Word文档,
                 word的文档的样式等信息都不能够很好的操作

4.FreeMarker生成word文档的功能是由XML+FreeMarker来实现的
        先将word文件另存为xml
            在xml文件中插入特殊的字符串占位符
            将xml翻译为FreeMarker模板
            最后用java来解析FreeMarker模板
            编码调用FreeMarker实现文本替换并输出Doc

  优点:比Java2word功能强大,也是纯Java编程
  缺点:生成的文件本质上是xml,不是真正的word文件格式,
                 有很多常用的word格式无法处理或表现怪异
                 如:
                   超链、换行、乱码、部分生成的文件打不开等。

5.PageOffice生成word文件
      PageOffice封装了微软Office繁琐的vba接口
       提供了简洁易用的Java编程对象,支持生成word文件
       同时实现了在线编辑word文档和读取word文档内容

  优点:跨平台支持windows、unix和linux,
                 生成word文件格式标准,
                 支持文本、图片、表格、字体、段落、颜色、超链、页眉等各种格式的操作
                 支持多word合并,无需处理并发,不耗费服务器资源,运行稳定

  缺点:必须在客户端生成文件(可以不显示界面),不支持纯服务器端生成文件
例:java导出word的示例
    // 声明变量存储从数据库中读取的数据
    String  docName = "", docDept = "", docCause = "", docNum = "", docDate = "";
    // 数据库数据读取操作(不同的数据库用不同的代码)
    ResultSet rs = stmt.executeQuery("select * from UserInfo where ID = " + id);
    if (rs.next()) {
        docName = rs.getString("Name");
        docDept = rs.getString("Dept");
        docCause = rs.getString("Cause");
        docNum = rs.getString("Num");
        docDate = rs.getString("SubmitTime");
    }
    rs.close();
    //创建PageOffice的WordDocument对象,操作Word文件
    WordDocument doc = new WordDocument();
    doc.openDataRegion("PO_name").setValue(docName);
    doc.openDataRegion("PO_dept").setValue(docDept);
    doc.openDataRegion("PO_cause").setValue(docCause);
    doc.openDataRegion("PO_num").setValue(docNum);
    doc.openDataRegion("PO_date").setValue(docDate);
    //创建PageOfficeCtrl对象打开文件
    PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
    poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须
    //获取数据对象
    poCtrl1.setWriter(doc);
    // 打开文档
    poCtrl1.webOpen("doc/test.doc", OpenModeType.docReadOnly, "Tom");
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202401/17062318197790.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者