博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Word文档生成
阅读量:6034 次
发布时间:2019-06-20

本文共 2065 字,大约阅读时间需要 6 分钟。

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

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

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

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

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

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

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

随便百度Google一下,发现这种方案其实许多人已经做过了,比如在下面的连接中,作者已经有了良好的实践:

本文的解决方案,与之存在类似之处--都是采用模板语言结合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,所有以文本格式的存储的文件都可以通过上述方式生成。

转载地址:http://povhx.baihongyu.com/

你可能感兴趣的文章
撕掉普通程序员的标签,这才是真正的大数据工程师!
查看>>
Windows下安装Sqlmap过程及遇到的问题
查看>>
BSD常见分支
查看>>
开挂了!这5个Word技巧真的是超级实用,值得收藏!
查看>>
三分钟了解实时流式大数据分析
查看>>
留与后人一段面试的总结
查看>>
Spring基于XML方式配置事务
查看>>
T-MBA学习营 | 寒窗十数载,我们原来并不会学习?
查看>>
log4j.properties模板
查看>>
Linux:信号(上)
查看>>
vmware虚拟化无法迁移虚拟机
查看>>
SQL UPDATE实现多表更新
查看>>
最近有个需求,就是把某个网址跳转到另外一个网址
查看>>
innobackupex 在增量的基础上增量备份
查看>>
Windows Server 2012 R2 DirectAccess功能测试(2)App1服务器安装及配置
查看>>
基于清单的启动器的实现
查看>>
外网用户通过citrix打印慢的解决方法
查看>>
STL容器的使用
查看>>
关于std::map
查看>>
JXL导出Excel文件兼容性问题
查看>>