迁移通知
本站内容正在逐步向 https://www.weiran.ink 迁移,更新内容请到新站查找。
HTD:另辟蹊径,一劳永逸解决各种花式Word报表需求
背景
众(猿)所周知,机关单位们定制软件时,十分钟情于使用软件直接生成Word
报表,并且最好还是*.doc
格式的,连*.docx
都十分排斥,至于什么*.odt
,*.html
甚至Markdown
,最好提都别跟他们提。
然而*.doc
又是十分难搞的一个东西,格式不开放所以很难直接生成。不买商业解决方案的前提下,唯一靠谱的直接思路就是通过COM
接口去调用本机安装的Word
来生成,具体过程有多麻烦,去搜下有多少相关的提问就知道了。
最近又有类似需求,苦恼两天后,突然想到,调用COM
接口向Word
中写入各种富文本很难,但调用它打开个*.html
再另存为一下能有多复杂?同时,既然允许用HTML
了,什么花式报表格式调不出来呢?也许交叉引用、样式一类的做不出来,但这类需求不是*.doc
党们轻易能想到的。
一番搜索之后,很快利用QT
的ActiveX
模块做成了一个小工具,作用就是打开一个Word
兼容的文件,再将其另存为任意Word
所支持的格式,包括但不限于*.doc
,*.rtf
等。默认没支持*.docx
,因为觉得*.docx
更好更专业的办法去生成。
一个特色:由于某些报表很宽,必须将纸张设置为横向才能正常显示。此软件加入了一个专门的选项应对该种情况。这一功能是投机取巧地将输出的*.html
文件改名为*.doc
所不能实现的。
软件发布
软件开源发布在Github上,点此查看。
代码量很小,加上各种错误检测也仅仅是两个源码文件。懒得自己编译的话也可以直接下载预编译的版本(支持WinXP,静态链接了QT
,仅仅待了三个MinGW
的动态库,相当的绿色)。
HTD
HTD是一个绿色小工具,用于将 Html 文档转换到 Microsoft Word 兼容格式。
理论上也应该适用于其它 Word 软件可接受的格式,例如* rft,* .txt等。
使用
帮助信息:
INFO: For latest version or other information, visit https://github.com/metorm/HTD Usage: HTD.exe [options] input output Html to Microsoft Word converter Options: -?, -h, --help Displays this help. -l, --landscape Set the paper orientation to landscape Arguments: input Full path to the HTML file (or any other parsable formats of MS Word). Only ASCII characters are allowed. output Full path to the output file. Only ASCII characters are allowed.
将 *.html 转换到 *.doc
操作十分简单:
C:\Documents\dev\build-HTD-Static-Release\release>HTD.exe C:\Documents\webpage\111.html C:\Documents\webpage\111_.doc input: C:\Documents\webpage\111.html output: C:\Documents\webpage\111_.doc FINISHED
注意: 输入/输出路径不能仅有后缀名不同. 例如: HTD.exe C:\Documents\webpage\111.html C:\Documents\webpage\111.doc
将使得 Word 引擎抛出异常, 而HTD.exe C:\Documents\webpage\111.html C:\Documents\webpage\_111.doc
则可以正常工作.
转换其他格式
直接在输入输出路径中传递你想要的后缀名即可,例如:
HTD.exe C:\Documents\webpage\111.doc C:\Documents\webpage\_111.rtf
设置输出文件的纸张方向
有时候你可能在你的html文件中有很宽的内容。 如果普通A4纸张的宽度不足以容纳您的页面,请附加-l,--landscape
选项,以将纸张方向设置为横向。
编译
本程序很小,编译十分简单。 只需下载/克隆源代码并使用Qt Creator
打开、编译即可。
除了QT
本身之外,没有任何依赖。 但是在安装或自行编译QT
时,必须选择qtactiveqt
模块。
如果没有开发需求,建议直接使用预编译的二进制文件。所发布的文件兼容于Windows XP或以上版本,并静态链接了QT运行库。