`
zi_wu_xian
  • 浏览: 31700 次
社区版块
存档分类
最新评论

Java生成Word文档

阅读更多

在开发文档系统或办公系统的过程中,有时候我们需要导出word文档。在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享。

      生成word文件与我们编辑word文档本质上是相同的,只不过在用程序生成word文档的时候换成了用代码来操作。下面的例子中主要有添加标题,正文(段落、字体、字号、倍行间距、对齐方式、首行缩进等),插入图片等操作。这里写的例子给出的内容只是PageOffice 组件生成word文件的部分方法,需要使用更多方法的还是要自己根据实际的需求去查看API。API地址:http://www.zhuozhengsoft.com/help/java3/index.html

  查看com.zhuozhengsoft.pageoffice.wordwriter 包下的对象和方法是用来生成word文件的

  

那就直接先上代码吧:

复制代码
 1     PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);
 2     poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); 
 3     //创建WordDocument对象
 4     WordDocument doc = new WordDocument();
 5     //设置内容标题
 6     //创建DataRegion对象,PO_title为自动添加的书签名称,书签名称需以“PO_”为前缀,切书签名称不能重复
 7     //三个参数分别为要新插入书签的名称、新书签的插入位置、相关联的书签名称(“[home]”代表Word文档的第一个位置)
 8     DataRegion title = doc.createDataRegion("PO_title",
 9             DataRegionInsertType.After, "[home]");
10     //给DataRegion对象赋值
11     title.setValue("C#中Socket多线程编程实例\n");
12     //设置字体:粗细、大小、字体名称、是否是斜体
13     title.getFont().setBold(true);
14     title.getFont().setSize(20);
15     title.getFont().setName("黑体");
16     title.getFont().setItalic(false);
17     //定义段落对象
18     ParagraphFormat titlePara = title.getParagraphFormat();
19     //设置段落对齐方式
20     titlePara.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);
21     //设置段落行间距
22     titlePara.setLineSpacingRule(WdLineSpacing.wdLineSpaceMultiple);
23 
24     //设置内容
25     //第一段
26     //创建DataRegion对象,PO_body为自动添加的书签名称
27     DataRegion body = doc.createDataRegion("PO_body",DataRegionInsertType.After, "PO_title");
28     //设置字体:粗细、是否是斜体、大小、字体名称、字体颜色
29     body.getFont().setBold(false);
30     body.getFont().setItalic(true);
31     body.getFont().setSize(10);
32     //设置中文字体名称
33     body.getFont().setName("楷体");
34     //设置英文字体名称
35     body.getFont().setName("Times New Roman");
36     body.getFont().setColor(Color.RED);
37     //给DataRegion对象赋值
38     body.setValue("是微软随着VS.net新推出的一门语言。它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性。而且,微软推出C#主要的目的是为了对抗Sun公司的Java。大家都知道Java语言的强大功能,尤其在网络编程方面。于是,C#在网络编程方面也自然不甘落后于人。本文就向大家介绍一下C#下实现套接字(Sockets)编程的一些基本知识,以期能使大家对此有个大致了解。首先,我向大家介绍一下套接字的概念。\n");
39     //创建ParagraphFormat对象
40     ParagraphFormat bodyPara = body.getParagraphFormat();
41     //设置段落的行间距、对齐方式、首行缩进
42     bodyPara.setLineSpacingRule(WdLineSpacing.wdLineSpaceAtLeast);
43     bodyPara.setAlignment(WdParagraphAlignment.wdAlignParagraphLeft);
44     bodyPara.setFirstLineIndent(21);
45 
46     //第二段
47     DataRegion body2 = doc.createDataRegion("PO_body2",DataRegionInsertType.After, "PO_body");
48     body2.getFont().setBold(false);
49     body2.getFont().setSize(12);
50     body2.getFont().setName("黑体");
51     body2.setValue("套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。\n");
52     //body2.setValue("[image]../images/logo.jpg[/image]");
53     ParagraphFormat bodyPara2 = body2.getParagraphFormat();
54     bodyPara2.setLineSpacingRule(WdLineSpacing.wdLineSpace1pt5);
55     bodyPara2.setAlignment(WdParagraphAlignment.wdAlignParagraphLeft);
56     bodyPara2.setFirstLineIndent(21);
57 
58     //第三段
59     DataRegion body3 = doc.createDataRegion("PO_body3", DataRegionInsertType.After, "PO_body2");
60     body3.getFont().setBold(false);
61     body3.getFont().setColor(Color.getHSBColor(0, 128, 228));
62     body3.getFont().setSize(14);
63     body3.getFont().setName("华文彩云");
64     body3.setValue("套接字可以根据通信性质分类,这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间进行通信。不过只要底层的通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型:流套接字和数据报套接字。\n");
65     ParagraphFormat bodyPara3 = body3.getParagraphFormat();
66     bodyPara3.setLineSpacingRule(WdLineSpacing.wdLineSpaceDouble);
67     bodyPara3.setAlignment(WdParagraphAlignment.wdAlignParagraphLeft);
68     bodyPara3.setFirstLineIndent(21);
69 
70         //第四段,插入图片
71     DataRegion body4 = doc.createDataRegion("PO_body4", DataRegionInsertType.After, "PO_body3");
72     body4.setValue("[image]doc/logo.png[/image]");
73     //body4.setValue("[word]doc/1.doc[/word]");//还可嵌入其他Word文件
74     ParagraphFormat bodyPara4 = body4.getParagraphFormat();
75     bodyPara4.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);
76 
77     poCtrl1.setWriter(doc);
78     poCtrl1.webOpen("doc/template.doc", OpenModeType.docNormalEdit,"张三");
复制代码

  在开发的过程中可能会遇到的问题,在此给大家做个解释。

  DataRegion(数据区域):数据区域也就是“PO_”开头的word书签,标记在生成文件的时数据在文件中插入的位置。

  两个无需定义的特殊位置:[home]:表示一个word文件页首的位置;[end]:表示word文件的末尾位置;

---------------------------------------------------------------------------------------------------------------------------------------------------  

  createDataRegion

  public DataRegion createDataRegion(java.lang.String newDataRegionName,
                                   DataRegionInsertType insertType,
                                   java.lang.String relativeDataRegionName)
                            throws java.lang.Exception,
                                   java.io.IOException
创建一个新的数据区域,并返回 DataRegion 对象。

调用此方法可以轻松地在指定的数据区域之前或之后创建新的数据区域并对新数据区域赋值或控制。

RelativeDataRegionName一般是文档中已存在的用户已预先定义的数据区域,但是RelativeDataRegionName还可以使用PageOffice开发平台预留的两个特殊数据区域:[HOME]和[END]。 [HOME]和[END]不需用户打开文档手动定义,它们分别代表文档的开始光标位置和结束光标位置。

如果当前文档是空白文档,一个数据区域都不存在,使用[HOME]和[END]可以从空白文档生成一个图文并茂的格式文档。

参数:
newDataRegionName - 新建 DataRegion 的名称。注意:应当确保不与文档中已存在的数据区域同名。
insertType - 新建 DataRegion 的插入方式。
relativeDataRegionName - 相对 DataRegion 的名称。
返回:
返回 DataRegion 对象。  

---------------------------------------------------------------------------------------------------------------------------------------------------

  当一个空白的word文件做模板时,文件中是没有一个数据区域的,下面的代码就是在word文件页首位置的后面创建了一个数据区域PO_title,赋值了标题内容,然后在这个标题的后面创建了一个数据区域PO_body,赋值了正文的内容:

1 DataRegion title = doc.createDataRegion("PO_title",DataRegionInsertType.After, "[home]");
2 title.setValue("C#中Socket多线程编程实例\n");
3 DataRegion body = doc.createDataRegion("PO_body",DataRegionInsertType.After, "PO_title");
4 body.setValue("是微软随着VS.net新推出的一门语言……");

  其他的代码应该就无需解释了。运行上面的程序就可以生成如下图所示的word文件了。

  

  源码下载:http://www.zhuozhengsoft.com/dowm/ 下载PageOffice for Java,解压之后,拷贝Samples4文件夹到Tomcat的Webapps目录下,访问:http://localhost:8080/Samples4/index.html

  查看示例:三、7、完全编程实现动态生成Word文件

分享到:
评论

相关推荐

    java生成word文档完美解决方案.

    在Java开发中,生成Word文档是一项常见的需求,例如在报告生成、数据导出或合同制作等场景。...实际应用中,根据项目特性和需求选择合适的库,并灵活运用其提供的功能,就能实现Java生成Word文档的“完美解决方案”。

    Java导出Word文档的实现.docx

    在Java开发中,导出Word文档是一项常见的任务,尤其在生成报表、报告或者合同等场合。本文将探讨如何使用Java高效地实现Word文档导出,主要聚焦于利用XDocReport和FreeMarker模板引擎的方式。 首先,Java中导出Word...

    java导出word文档,固定模板

    Java 导出Word文档是一项常见的任务,特别是在企业级应用中,比如报告生成、合同模板等。本教程将重点介绍如何利用Freemarker技术实现这一功能,特别是如何将Word模板转化为可编程填充的数据模板。 首先,让我们...

    java生成word的实例 java导出Word文档的实例

    这个实例将带你了解如何在Java环境中使用API来创建和导出Word文档。以下是一些关键的知识点: 1. **Apache POI库**: Apache POI是Java社区开发的一个开源项目,提供了读写Microsoft Office格式文件的能力,包括...

    java生成word的实例 java导出Word文档的实例.rar

    本实例将探讨如何使用Java技术来创建和导出Word文档。主要涉及的技术栈包括Apache POI库,它是一个强大的API,允许开发者处理Microsoft Office格式的文件,包括Word(.doc和.docx)。 Apache POI提供了HSSF和XSSF两...

    java数据源导出WORD文档(包括图片、表格及文本)

    最近因项目开发的需要,整理了一份用JAVA导出WORD文档,其部署步骤如下: 1、将jacob-1.14.3-x86.dll放在服务器的系统盘(或运行本机的系统):\WINDOWS\system32目录下。 2、将jacob-1.14.3-x86.dll放在JDK 的 bin ...

    JAVA 导出WORD

    在Java编程环境中,导出Word文档是一项常见的任务,特别是在企业级应用中,如报表生成、数据导出等。本文将详细讲解如何使用Java实现Word文档的导出,并着重介绍涉及的库和关键技术。 首先,标题"JAVA 导出WORD"指...

    java导出word文档

    Java 导出 Word 文档是一项常见的任务,在许多企业级应用中都有所应用,例如报告生成、数据导出等。在本教程中,我们将探讨如何利用 FreeMarker 模板引擎来实现这一功能。FreeMarker 是一个强大的、开源的模板语言,...

    java 生成Word文档-模板示例

    Java 生成 Word 文档-模板示例 Java 生成 Word 文档-模板示例是 Java 开发语言中的一种常见应用场景,通过使用 Java 语言,可以生成 Word 文档,以满足业务需求。下面是该示例中涉及到的知识点: 1. Java 模板引擎...

    Java使用POI导出Word文档

    Java使用Apache POI库导出Word文档是一种常见的技术实践,特别是在企业级应用中,用于生成报告、合同或者自定义的数据输出。Apache POI是Apache软件基金会的一个开源项目,它提供了处理Microsoft Office格式(如Word...

    用java生成word文档方法

    在IT领域,特别是软件开发行业中,使用Java生成Word文档是一种常见的需求,特别是在自动化报告生成、文档模板填充等场景中。本文将深入探讨如何利用Java语言和相关库来实现这一功能,重点介绍Apache POI和一个相对...

    java生成word文档.pdf

    "Java 生成 Word 文档" 本文主要介绍了使用 Java 生成 Word 文档的方法,通过使用 iText 库来生成 PDF 文件,并将其转换为 Word 文档。下面是相关的知识点: 1. iText 库简介 iText 是一个 Java 类库,能够快速...

    java 根据word模板生成word 文档

    ### Java生成Word文档技术解析与实现 在现代企业级应用中,动态生成Word文档的需求日益增多,尤其是在报表生成、文档自动生成等领域。Java作为一种广泛使用的编程语言,提供了多种方法来根据Word模板生成Word文档,...

    java导出图片到word文档

    在Java编程中,将图片导出到Word文档是一项常见的任务,尤其在自动化报告生成或数据可视化等场景下。本文将详细介绍如何使用Java实现这一功能,包括必要的库、步骤以及可能出现的问题。 首先,我们需要一个能够处理...

    java导出word文档相关jar

    Java导出Word文档是开发过程中常见的一项任务,尤其在企业级应用中,为了实现数据的导出和报告生成,这项技术尤为重要。Apache POI库是一个强大的开源项目,它提供了读写Microsoft Office格式文件的能力,包括Word...

    java生成word文档代码详解

    ### Java生成Word文档代码详解 #### 一、引言 在日常工作中,有时我们需要通过程序自动生成Word文档,尤其是在报表生成、数据导出等场景下。利用Java来生成Word文档不仅可以提高工作效率,还能确保文档的一致性和...

    java生成word文档

    java生成word文档 有研究或探讨或开源的请加群:37424970 或联系本人MSN或邮箱:zhuseahui@yahoo.com.cn

    用java生成word文档

    博文链接:https://guoyiqi.iteye.com/blog/78638

Global site tag (gtag.js) - Google Analytics