如何能让Java生成复杂Word文档

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何能让Java生成复杂Word文档相关的知识,希望对你有一定的参考价值。

目录制作的几种方法:
一.从标题样式创建目录的操作步骤是:
(1)把光标移到要移到目录的位置。一般是创建在该文档的开头或者结尾。
(2)单击【插入】|【引用】|【索引和目录】选项,并在弹出的【索引和目录】对话框选择【目录】选项卡,打开【索引和目录】对话框。
(3)在【格式】列表框中选择目录的风格,选择的结果可以通过【打印预览】框来查看。如果选择【来自模板】选项,标识使用内置的目录样式(目录1到目录9)来格式化目录。如果要改变目录的样式,可以单击【修改】按钮,按更改样式的方法修改相应的目录样式。并且只有选择【来自模板】选项时,【修改】按钮才有效。
(4)如果要在目录中每个标题后面显示页码,应选择【显示页码】复选框。
(5)如果选中【页码右对齐】复选框,则可以让页码右对齐。
(6)在【显示级别】列表框中指定目录中显示的标题层次。一般只显示3级目录比较恰当。
(7)在【制表符前导符】列表框中指定标题与页码之间的制表位分隔符。
(8)单击【确定】按钮
二.由目录域创建目录,操作方法如下:
(1)在文档中将包含目录的文字标题选中。
(2)按快捷键alt+shift+o。打开【标记目录项】对话框。
(3)在【级别】框中,选择目录的级别,如1,2,3等级别。并单击【标记】按钮。
(4)不退出对此对话框,选择第二个文字标题,当切换【标记目录项】对话框为活动窗口时,该选定的文本就会出现在【目录项】文本框中。
继续标记直到完成。当标记完所有需要创建的目录文本后,此时该对话框中的【取消】按钮将变成【关闭】按钮,单击【关闭】按钮退出。
(5)将光标移到要插入目录的位置(一般是文档的开头或结尾处)。
(6)单击【插入】|【引用】|【索引和目录】命令。
(7)单击【目录】选项卡。
(8)单击【选项】按钮。
(9)在【目录选项】框中,选中【目录项域】复选框。并且清除【样式】和【大纲级别】复选框。
(10)连续单击【确定】按钮即可使用目录域创建目录,即可在指定的地方插入了由目录域创建的目录。
参考技术A 会生成简单的,那使劲堆代码,不就可以了,排版自己搞 参考技术B 关键字 JaCob,JXL,POI
比较常用的几个操作word、excel等文档的API组件
具体方法见对应文档本回答被提问者和网友采纳

Java jacob调用打印机打印word文档

前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档。

起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整。网上的代码也是千篇一律,在我的打印设备Canon iR2525/2530 UFRII LT上,我能获取到打印机的各属性,当前任务数。但是打印机没反应。

可参考这两篇文章:

http://www.360doc.com/content/05/0916/11/332_12789.shtml

http://www.ibm.com/developerworks/cn/java/l-javaprint/

折腾了好久,最终决定由用一个第三方的,找到了jacob,还不错,特此记录下。

1.将jacob的dll文件拷贝到C:\\Windows\\System32中。

2.在任务管理器中将服务DCom Server Process Launcher(DcomLaunch)打开。

3.将jacob.jar拷贝到项目的/libs目录下。

值得注意的是,我在Windows Server 2008上,找不到dll文件,报错:Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.17-x86 in java.library.path

但是在win系统上,就没事了。

所以这时候你需要将dll文件也拷贝至你的jdk/bin目录下,jdk/jre/bin目录下,以及jre/bin目录下。这样就没有什么问题了。

代码如下:

public class TestDoc {
    public static void main(String[] args) {
        String path="D:\\\\yanqiong.doc";
        System.out.println("开始打印");
        ComThread.InitSTA();
        ActiveXComponent word=new ActiveXComponent("Word.Application");
        Dispatch doc=null;
        Dispatch.put(word, "Visible", new Variant(false));
        Dispatch docs=word.getProperty("Documents").toDispatch();
        doc=Dispatch.call(docs, "Open", path).toDispatch();
        
        try {
            Dispatch.call(doc, "PrintOut");//打印
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("打印失败");
        }finally{
            try {
                if(doc!=null){
                    Dispatch.call(doc, "Close",new Variant(0));
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
            //释放资源
            ComThread.Release();
        }
    }
}

示例代码:

http://pan.baidu.com/s/1o7NrPcY    up56

如果此文对您有帮助,微信打赏我一下吧~

以上是关于如何能让Java生成复杂Word文档的主要内容,如果未能解决你的问题,请参考以下文章

java如何根据word模板生成word文档

java通过freemarket生成word文档

java动态生成word,该怎么解决

java怎么实现导出数据后放到word文档中,并且可以保存到本硬盘上(类似于百度文库里面的下载功能)

如何用java生成word

有没有简单一点的Java库,用来生成word文档