找回密码
 立即注册

QQ登录

只需一步,快速开始

kuku_lz

中级会员

5

主题

15

帖子

990

积分

中级会员

积分
990

活字格认证微信认证勋章元老葡萄

kuku_lz
中级会员   /  发表于:2012-7-3 15:48  /   查看:8015  /  回复:9
项目遇到一个问题,有一个文档模板,详见附件,文档中有一些需要填写的内容,希望用户可以在 MS Word中编辑这些文档内容,完成后可以保存成doc或docx格式的文档,用TX TextControl打开该文档后,希望能够访问这些用户手工填写的内容,并把这些内容更新到后台的数据库中,试过用TX Template建立的模板,但是该模板经过WORD编辑后,所有的MergeFiled会丢失,只有使用TX TextControl控件编写的程序编辑模板文档后,才能通过MergeField访问,想问一下,有没有什么办法能够提取这些在Word编辑后的用户输入的内容呢,或者建立模板的时候采用别的什么方式?


DocTemplate.rar (13.86 KB, 下载次数: 242)

9 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-7-3 17:02:00
沙发
回复 1楼kuku_lz的帖子

你好,
重现步骤:
使用 TX Template Designer 编辑模板->添加 MergeField ->保存为 docx 格式->使用 Word 编辑->重新使用 word 打开。
MergeField 依然存在。没有重现楼主的问题。下面是我的模板:

Template1.docx (9.07 KB, 下载次数: 286)
回复 使用道具 举报
kuku_lz
中级会员   /  发表于:2012-7-3 21:34:00
板凳
应该是我没有说清楚,是这样的,

项目设计的目标是想通过设计一系列表格文档的模板(.doc或.docx格式),用户下载了这些文档后,使用Word程序完成表格数据的填写,然后保存文档。用户通过上传得方式,将文档上传到服务器,在服务器端使用TXTextControl载入用户上传得文档,分析后,将表格中的数据填入后台的数据库中。

但是我发现,使用Word文档编辑模板后,打开文档时MergeField以“<<FieldName1>>”方式显示,如果在word编辑器中用"FieldValue1"替换该“<<FieldName1>>”,保存。再使用TXTextControl打开保存后的文档,那么这个“<<FieldName1>>”的MergeField就无法通过TXTextControl.ApplicationField集合进行遍历啦。但是如果使用TX TextControl控件打开模板,同样替换这个“<<FieldName1>>”为"FieldValue1"后,再保存,该“<<FieldName1>>”的MergeField还是存在的。

上传文件的"模板.doc"是建立好的文档,"Word编辑完成后的文件.doc"是使用WORD编辑模板文档后的最终文档,现在使用TXTextControl打开这个最终文档后,已经无法通过TXTextControl.ApplicationField集合访问任何模板文件中设置好的MergeFiled对象啦.

我的问题是,TXTextControl能否实现我们程序设计的目标,通过WORD对模板文件编辑后,再由TXTextControl控件对文档解析,完成后台数据库的数据更新。如果使用MergeField这种方法不行的话,有没有别的方法呢?
回复 使用道具 举报
admin讲师达人认证 悬赏达人认证 活字格认证 SpreadJS 开发认证
管理员   /  发表于:2012-7-4 10:04:00
地板
回复 3楼kuku_lz的帖子

楼主的意思是怎么通过 TX 读取 Word 中的 MergeField :
请参考以下 Demo :

5022.zip (58.83 KB, 下载次数: 236)
回复 使用道具 举报
kuku_lz
中级会员   /  发表于:2012-7-4 15:08:00
5#
非常感谢,但还是没有明白我的意思,上传的文档中有步骤说明和截图示意,看看这下能不能明白我的意图。再次感谢版主的帮助!!!

Word编辑TX TextControl Template的问题.docx (697.6 KB, 下载次数: 323)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-7-4 18:12:00
6#
回复 5楼kuku_lz的帖子

kuku_lz 你好,
原因为:word 中 “《》”为 MergeField 标识符,必须保留 MergeField 的 文本 标识符 其中之一 MergeField 才会保留。看到 1# 中的 “Word编辑完成后的文件.doc” ,其中的 MergeField 已经全部丢失。所以无法拿到。
解决方法有:
1.先在 Word 中更改文本之后再删除 “《》”。
2.如果是在去数据时不需要“《》”,可以在取得 MergeField.Text 后,使用 Trim 方法去除“《》”。在导入数据库。
回复 使用道具 举报
kuku_lz
中级会员   /  发表于:2012-7-4 20:25:00
7#
非常感谢,第二种方法我也试过了,可行,但是让最终用户在《》之间填写内容,不是很方便,尤其是当填写的内容较多时,用户尤其会觉得挺别扭的。

我用TXTextControl这个控件时间不长,许多特性还不了解,所以还想请教,在TXTextControl控件中有没有别的方法或特性能够比较好的解决我的需求呢?

:share:
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-7-5 11:29:00
8#
回复 7楼kuku_lz的帖子

你好,
根据楼主的描述,可以在 Word 中添加 BookMarks 来实现。
方法描述:例如我们取制造单位字段-MFName,那么就在“制造单位”后添加 BookMark1,在该行结束部分添加 BookMark2。这样我们就可以通过两个 BookMark 定位了“制造单位”。如图:
Untitled.png
下面是我制作的 Demo 请参考:
5081.zip (54.14 KB, 下载次数: 288)
回复 使用道具 举报
kuku_lz
中级会员   /  发表于:2012-7-5 12:00:00
9#
灰常灰常感谢!!!

:rose  :share:
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-7-5 12:19:00
10#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部