Word文档生成

简介:

非常多的时候,都需要在程序当中生成一些文档,这些文档可能是csv,word,pdf,PPT,xls等文件格式。

生成csv还是比较简单的,但是要生成word,excel就麻烦多了。

当然,Tiny框架也面临这个问题,如何才能帮助开发人员快速生成这些文档呢?

一般来说,现在用java生成Word有如下方式:

POI,iText,当然还有Xml形式。

对于采用POI,iText来说,要生成复杂的Doc文件,其实并不容易。而采用Xml结构生成,去把一个文档生成xml文件,看看里面的内容,估计也会是满头是汗。

Tiny构建者,认为,生成Doc,Xls,PDF等文档类型是管理系统绕不过去的坑,那既然没有办法绕过,那就是说无论如何都要过了?

随便百度Google一下,发现这种方案其实许多人已经做过了,比如在下面的连接中,作者已经有了良好的实践:http://developer.51cto.com/art/201106/270815.htm

本文的解决方案,与之存在类似之处--都是采用模板语言结合xml来生成xml格式Word文件,但是实现模式还是不一样的,本文提供的方案更具有通用性、易用性,易用到像做网站一样生成Word文档。

为此,Tiny框架对于生成文本格式文件的内容进行了抽象,只要是生成文本格式的文件,都可以通过Tiny框架的文档生成框架进行扩展,使得开发人员可以方便快捷的生成文本类型的文档。

由于Office文档已经有了xml格式的存储方式,由于pdf可以通过xml生成,因此,最常用的office文档和pdf文档都可以通过本框架快速生成,当然,有一些基础性工作还是要自己做的(偷偷的透露一下:常用的模板框架中都会包含的)。

角色分配

文档生成框架扩展

文档生成框架扩展是非常简单的,你不用编写代码,只要编写配置文件即可

1.编写Bean文件

?
1
2
3
4
5
6
7
< bean id = "docTemplateFileProcessor" scope = "singleton" class = "org.tinygroup.docgen.fileresolver.TemplateFileProcessor" >
     < property name = "fileExtName" value = ".doctemplate" ></ property >
     < property name = "documentType" value = "doc" ></ property >
</ bean >
注意:
fileExtName属性是指模板文件的扩展名
documentType属性是指文档类型

宏文件编写

文档生成框架本身并不能直接生成各种文档,需要高级开发人员进行模板编写。
这部分主要是定义Velocity模板文件了。
比如:定义下面的宏,可以用来生成word文件中的链接

?
1
2
3
4
#macro(link $url)
$bodyContent
</w:hlink
#end

文档模板编写

普通开发利用高级开发人员编写的宏文件,就可以简单快捷的编写文档模板了。

比如下面的代码就可以生成新浪网的链接地址:

#link("http://www.sina.com.cn/") #p("新浪网") #end

是不是不用知道Word文档格式,也可以方便快速的编写Word文档了?

示例

编写下面的模板文件

#@wordDocument()
#@body()
#h("Tiny Framework" 1)
#h("Tiny Framework" 2)
#h("Tiny Framework" 3)
#h("Tiny Framework" 4)
#h("Tiny Framework" 5)
#end
#end 

编写下面的java代码:

DocumentGeneraterManager manager = SpringUtil.getBean(DocumentGeneraterManager.MANAGER_BEAN_NAME);
File file=new File("test.xml");
FileOutputStream outputStream=new FileOutputStream(file);
manager.getFileGenerater("doc").generate("/test.docpage", new ContextImpl(), new OutputStreamWriter(outputStream));
outputStream.close();

运行用Word打开生成的test.xml的结果:

当然,框架中已经定义了Word中大量的元素,也就是说大部分都可以像上面的方式来添加表格,样式,等等元素。再结合上各种数据获取,生成各种类型文档都是手到捻来。在Tiny框架就有大量的运行时数据,比如:服务定义,组件定义,插件定义等等,都是直接通过文档生成框架即时生成,保证了文档的可用性及有效性。

当然,不仅仅可以且来生成Word,所有以文本格式的存储的文件都可以通过上述方式生成。


相关文章
|
25天前
|
XML C# 开发工具
C# 删除Word文档中的段落
【11月更文挑战第3天】本文介绍了两种方法来操作 Word 文档:一是使用 `Microsoft.Office.Interop.Word` 库,适用于 Windows 环境下操作 Word 文档,需引用相应库并在代码中引入命名空间;二是使用 Open XML SDK,适用于处理 .docx 格式的文档,通过引用 `DocumentFormat.OpenXml` 库实现。文中提供了示例代码,展示了如何打开、删除段落并保存文档。
|
Python
Word 批量转 PDF
Word 批量转 PDF
212 0
Word 批量转 PDF
|
XML 前端开发 小程序
PDF转Word完全指南:3大方法满足各种场景!
还不知道PDF怎么转Word吗,本文将提供完整的PDF转Word方案,包括离线、在线或者SDK API等各种方式,总有一款满足您的需求。
817 0
|
安全
PDF转Word
PDF转Word
466 0
PDF转Word
Word - Word 文档如何切换简体字和繁体字?
Word - Word 文档如何切换简体字和繁体字?
151 0
Word - Word 文档如何切换简体字和繁体字?