## **动态生成WORD文件**
PageOffice 组件提供的接口和对象都简洁高效,开发效率很高。不仅支持从一个空白的Word生成文件,还可以对现有的word模板做数据填充,还可以把多个word模板插入到一个word模板中不同的位置来组合生成文件,比如做一个试卷生成系统,甚至还可以插入图片和Excel文件到word模板中的指定位置去生成一个复合型的文档报表,功能异常强大。下面列举几个生成文件的效果代码:
1) 从空白生成文件的代码:
~~~
WordDocument doc = new WordDocument();
//设置内容标题
//创建DataRegion对象,PO_title为自动添加的书签名称,书签名称需以“PO_”为前缀,切书签名称不能重复
//三个参数分别为要新插入书签的名称、新书签的插入位置、相关联的书签名称(“[home]”代表Word文档的页首)
DataRegion title = doc.createDataRegion("PO_title", DataRegionInsertType.After, "[home]");
//给DataRegion对象赋值
title.setValue("JAVA中编程实例\n");
//设置字体:粗细、大小、字体名称、是否是斜体
title.getFont().setBold(true);
title.getFont().setSize(20);
title.getFont().setName("黑体");
title.getFont().setItalic(false);
//定义段落对象
ParagraphFormat titlePara = title.getParagraphFormat();
//设置段落对齐方式
titlePara.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);
//设置段落行间距
titlePara.setLineSpacingRule(WdLineSpacing.wdLineSpaceMultiple);
//设置内容
//第一段
//创建DataRegion对象,PO_body为自动添加的书签名称
DataRegion body = doc.createDataRegion("PO_body", DataRegionInsertType.After, "PO_title");
//设置字体:粗细、是否是斜体、大小、字体名称、字体颜色
body.getFont().setBold(true);
body.getFont().setItalic(true);
body.getFont().setSize(10);
//设置中文字体名称
body.getFont().setName("楷体");
//设置英文字体名称
body.getFont().setNameAscii("Times New Roman");
body.getFont().setColor(Color.red);
//给DataRegion对象赋值
body.setValue("首先,我向大家介绍一下套接字的概念。\n");
//创建ParagraphFormat对象
ParagraphFormat bodyPara = body.getParagraphFormat();
//设置段落的行间距、对齐方式、首行缩进
bodyPara.setLineSpacingRule(WdLineSpacing.wdLineSpaceAtLeast);
bodyPara.setAlignment(WdParagraphAlignment.wdAlignParagraphLeft);
bodyPara.setFirstLineIndent(21);
~~~
2) 在一个word模板的文件中插入一个图片、word和Excel文档的代码:
~~~
WordDocument doc = new WordDocument();
//插入图片
// PO_body3是word模板中已存在的一个书签
DataRegion body4 = doc.createDataRegion("PO_body4", DataRegionInsertType.After, "PO_body3");
body4.setValue("[image]doc/logo.png[/image]");
//嵌入其他Word文件
//body4.Value = "[word]doc/1.doc[/word]";
//嵌入其他Excel文件
//body4.Value = "[excel]doc/1.xls[/excel]";
ParagraphFormat bodyPara4 = body4.getParagraphFormat();
bodyPara4.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);
~~~
3) 操作word中的表格代码:
~~~
WordDocument doc = new WordDocument();
//打开数据区域
DataRegion dataRegion = doc.openDataRegion("PO_regTable");
//打开table,openTable(index)方法中的index代表Word文档中table位置的索引,从1开始
Table table = dataRegion.openTable(1);
//给table中的单元格赋值, openCellRC(int,int)中的参数分别代表第几行、第几列,从1开始
table.openCellRC(3, 1).setValue("A公司");
table.openCellRC(3, 2).setValue("开发部");
table.openCellRC(3, 3).setValue("李清");
//插入一行,insertRowAfter方法中的参数代表第几行,从1开始
table.insertRowAfter(3);
table.openCellRC(4, 1).setValue("B公司");
table.openCellRC(4, 2).setValue("销售部");
table.openCellRC(4, 3).setValue("张三");
~~~
4) 给word添加一个水印,对于实现这个效果来说,PageOffice确实已经做到简单到极致,如果用iText那个方案,需要写至少十几行代码吧(由于篇幅的限制,这里就不写了,有兴趣的话可以网上搜索一下相关的资料),但 PageOffice的代码只用下面一句:
~~~
WordDocument doc =new WordDocument();
//添加水印 ,设置水印的内容
doc.getWaterMark().setText("北京某某公司");
~~~
>[info]**优点有以下几点**:不限制于Windows平台;接口和对象的设计就是针对Office文件生成专门优化设计的,代码写起来比较舒服可读性强;编程的工作量更小,如果开发中也利用了Word模板,那开发量可以更低;生成的文件是地地道道的Word格式,生成的文件效果比较完美;也不需要像POI那样必须对doc和docx格式分别写代码;最后一点:服务器端不需要安装Office,不使用服务器端资源,所以不需要处理服务器端文件生成时的并发问题,也就是很多用户同时访问系统生成文件时服务器的压力问题。请注意这点,采用这个方案的话,文件是在客户端生成的,调用的是客户端的资源,完全符合分布式计算的思想。
- 序言
- 产品简介
- PageOffice试用版和和正式版的区别
- PageOffice对客户端的要求
- PageOffice客户端安装步骤
- PageOffice常用功能与工作原理
- OA系统中的文档在线编辑及流转
- 痕迹保留、键盘批注、手写批注
- 文件并发控制功能
- 与数据库的关系
- SaveDataPage和SaveFilePage的区别
- 调用ZoomSeal签章系统中的印章
- 使用RunMacro运行Office的宏
- 为什么采用弹窗方式打开文件
- POBrowser弹窗方式的具体使用
- Word篇
- 常用接口对象
- WordDocument类
- DataRegion类
- DataTag类
- Paragraph类
- Shape类
- Table类
- Column类
- Row类
- Cell类
- WaterMark类
- DataRegion与DataTag的区别
- 编辑模板中的数据区域
- 动态填充Word文档
- 动态插入Word表格
- 动态创建数据区域
- 数据区域点击事件
- 实现Word文档编辑区域控制
- Word文档全文检索
- Word文件版本对比功能
- 实现用户自定义Word模板
- 实现多个Word文件合并
- Excel篇
- 常用接口对象
- Workbook类
- Sheet类
- Table类
- Cell类
- 动态填充Excel文档
- Excel指定单元格点击事件
- 实现用户自定义Excel模板
- 读取Excel文档中的数据
- 隐藏Excel的行号列标
- Java篇
- PageOffice集成说明
- 动态生成Word文件
- 给Word中的Table赋值
- 动态生成Excel文件
- Maven项目中引用PageOffice
- FileMaker组件功能简介
- ASP.NET篇
- PageOffice集成说明
- 给Word中的Table赋值
- 动态生成Word文档
- FileMaker组件功能简介
- 其他
- POPDF组件功能简介
- PPT相关功能简介
- 实现多人同时编辑一份文档
- PageOffice与Apache POI的区别
- 如何录制宏和编辑宏
- PDF篇
- PDF盖章