立即注册 登录
度量快速开发平台-专业、快速的软件定制快开平台 返回首页

张兴康的个人空间 http://p.delit.cn/?16 [收藏] [复制] [RSS]

日志

office部件使用详解

热度 1已有 1798 次阅读2018-7-14 09:28 |个人分类:部件使用|系统分类:部件使用| 数据库表, Office, 制作, Office

Office部件说明
度量快速开发平台office部件主要用于在平台中处理WORD\EXCEL文档,WORD的优越性在于其排版打印方便,而且能够做到修改留痕,度量快速开发平台中的word部件,充分利用了这两点,不但能将数据填充到已设置好的word模板,将其作为显示和打印文件的工具,同时还能直接书写、编辑、保存文档,配合工作流,可以将文档转给其它人处理或留痕审批甚至手写批注。本文件详细介绍了如何用word格式化显示数据、以及在线文档处理;例如:在线文档审批、合同打印等。经过不断的实践和提炼,目前平台中office部件的主要功能有:打开本地文档、存为本地文档、全屏编辑、留痕编辑、向文档中书签填充值、获取文档中书签值、获取文档中的文本内容、打开签名窗体… …等
 
1、         word格式化显示数据
适用范围:合同、中标通知书等,这类文档有一定的格式规范,只需要改动文档中关键位置的值即可;如下图所示:中标通知管理——点击新增——新增中标通知信息
下面我们将详细介绍实现上图所示功能的方法
 
1.1、新增office模板
 
如下图所示:点击office模板——新增模板;在编辑模板信息窗体中填写:模板名称、模板类别、文件夹;点击保存按钮,保存编辑内容
点击设计模板按钮,进入模板设计界面;在模板中相应位置添加上书签
 
1.2、管理界面:新增功能代码
 
平台中为了方便后期对数据的维护和管理,通常会制作一个管理界面,界面包含新增、修改、查看、删除等功能。通过以下步骤编写管理界面中新增功能代码:
中标通知管理界面——功能管理——添加一个新增功能
'打开智能窗体,窗体位置:项目窗体\本地项目\office部件演示\*中标通知编辑*
dim form1 = 创建窗体("3fe946fc-4212-48cd-ba82-74a3e277b396")
form1.Input1 = "新增"
form1.ShowDialog()
 
'刷新网格部件数据
网格部件1.RefreshData()
 
1.3、编辑窗体:加载事件代码
 
用户在管理界面点击“新增”按钮,平台就会传一个“新增”值到编辑窗体中;下面代码就是判断当从管理界面传过来的值等于“新增”时,执行新增操作:
if me.Input1 = "新增" then
         me.FormTitle = "新增中标通知信息"
        
         Office部件1.RefreshData()
         '新增数据
         记录部件1.AddNewRow()
         '设置字段值
         记录部件1.SetFieldValue("日期",Now())
end if
 
 
1.4、向文档中书签填充值
    向文档中添加值,可以通过记录部件的值变化事件,当值发生变更时,即填充到 Word文档中。通过以下步骤编写值变化事件的代码:
事件管理——智能部件——记录部件——字段值变化事件代码:
if e.FieldName="编号"  then
         '当记录部件中编号字段值发生变化时,将该值赋值给office中书签“编号”
         Office部件1.SetBookMarkValue("编号",记录部件1.GetFieldValue("编号"))
end if
 
if e.FieldName="招标日期" then
         '当记录部件中招标日期字段值发生变化时,将该值赋值给office中书签“招标日期”
         Office部件1.SetBookMarkValue("招标日期",FormatDateTime(记录部件1.GetFieldValue("招标日期"),"yyyy年MM月dd日"))
end if
 
if e.FieldName="中标价" then
         '当记录部件中中标价字段值发生变化时,将该值赋值给office中书签“中标价”
         Office部件1.SetBookMarkValue("中标价",记录部件1.GetFieldValue("中标价"))
         '当记录部件中中标价字段值发生变化时,将该值赋值给office中书签“单价”
         Office部件1.SetBookMarkValue("单价",记录部件1.GetFieldValue("中标价"))
end if
 
dim zongjia = 0.00
 
if e.Value1 = "中标价" then
         if isnull(e.Value2) = false and isnull(记录部件1.GetFieldValue("数量")) = false then
                   zongjia = e.Value2 * 记录部件1.GetFieldValue("数量")
                   记录部件1.SetFieldValue("总价",zongjia)
         end if
end if
 
if e.Value1 = "数量" then
         if isnull(e.Value2) = false and isnull(记录部件1.GetFieldValue("中标价")) = false then
                   zongjia = e.Value2 * 记录部件1.GetFieldValue("中标价")
                   记录部件1.SetFieldValue("总价",zongjia)
         end if
end if
 
if e.FieldName="总价" then
         '当记录部件中总价字段值发生变化时,将该值赋值给office中书签“总价”
         Office部件1.SetBookMarkValue("总价",记录部件1.GetFieldValue("总价"))
end if
 
end if
效果展示:
 
1.5、编辑窗体:保存功能(获取文档中的文本内容、保存文档)
 
获取文档中的文本内容功能,通常是在保存文档时调用;开发平台在保存office文档时,是以加密文件的形式保存到服务器端的;因此若要实现全文检索,在建立数据库表时,要建立一个类型为:文章的字段来保存文档的文本内容;再建立一个文档ID字段用来保存文档的记录ID,以方便从服务器端根据记录ID值读取文档。如下图所示:
保存功能具体代码如下:
'设置记录部件"文档ID"字段的值为记录部件中"ID"字段的值
记录部件1.SetFieldValue("文档ID",记录部件1.GetFieldValue("ID"))
 
'设置记录部件"文档内容"字段的值为office文档的内容
记录部件1.SetFieldValue("文档内容",Office部件1.GetContentText())
 
'设置office文档的记录ID值为记录部件的ID值
office部件1.RecordId = 记录部件1.GetFieldValue("ID")
 
if office部件1.SaveDocument() then
         记录部件1.SaveData()
         ShowInformation("保存成功")
         Me.Output1="Y"
    Me.Close()
else
         ShowMessage("保存失败,请检查网络或者重新点保存!")
end if
 
1.6、编辑窗体:打印文档功能
 
用于打印word文档内容
1.           '打印文档内容
2.           Office部件1.Print()
 
在日常工作中,有时需要打印上百份甚至更多的文档,这些文档的模板一样,只是数据不同,一份份手工打印必然增大我们的工作量,为了解决这一问题,我们通过快速开发平台构建了批量打印功能,您只需要勾选需要打印的条数,再点一下批量打印按钮就可以悠闲的等待打印完成。具体参见:http://plat.delit.cn/home.php?mod=space&uid=8&do=blog&id=148
 
 
2、         在线文档处理
适用范围:公文处理,这类文档通常需要不同人员进行修改,审阅;因此需要有留痕编辑、全屏编辑、打开本地文档、存为本地文档、打开签名窗体等功能。如下图所示:
下面我们将详细介绍上图所示的功能
 
2.1office模板设计
 
Office模板新增在1.1中已经讲解,这里就不在赘述
下图中office模板插入了两个书签:标题、副标题,因文档中的标题和副标题通常都要求居中,为实现这点,我们通常先插入一个无边框的表格,设置表格内容居中,再在表格中插入书签
 
2.2、office部件功能:打开本地文档
 
在实际工作中,很多文档都是已经在本地编辑好了的;如果通过复制粘贴的方式将文档内容拷贝到平台中,就太过麻烦;为此平台提供了一个打开本地文档的功能,只需要选中相应文档,即可将文档中的内容拷贝到平台中来。具体代码如下:
'打开本地文档
Office部件1.OpenLocalFile()
 
打开本地文档功能效果展示:
 
 
2.3、office部件功能:全屏编辑
 
在编辑文档时,大多数人都喜欢将word全屏打开来编辑文档;调用平台中office部件的全屏编辑功能,即可将文档全屏打开进行编辑;具体代码如下:
'将word全屏打开
Office部件1.ShowInFullScreen()
 
全屏编辑功能效果展示:
编辑完成后,点击右上角关闭按钮,即可返回之前的编辑模式
 
 
2.4、office部件功能:留痕编辑
 
在实际工作中,文档往往需要经过多次修改,而且需要将每次修改的内容留痕,以方便了解修改的内容;所以文档的留痕编辑功能必不可少。具体代码如下:
'设置office部件的编辑模式为:有痕迹保留,不可以修订,可以手写批注
Office部件1.EditType="2,1"
文档编辑控制调用格式:Office控件1.EditType=“X,Y”;
X的含义如下:
“0”只读、且不能拷贝,
“1”起草编辑[可写无痕迹保留]
“2”编辑[有痕迹保留,不可以修订]
“3”审核[有修订菜单]
“4”只读、可以复制文档内容。
Y的含义如下:
可以为0,1 其中:0不可手写批注,1可以手写批注
留痕编辑功能效果展示:
 
 
2.5、office部件功能:获取书签值
 
有时候,我们需要将office部件中书签的值获取出来,再赋给其他的字段;通过下面的代码即可实现:
'设置记录部件中"标题"字段的值为office部件中书签标题的值
记录部件1.SetFieldValue("标题",Office部件1.GetBookMarkValue("标题"))
'设置记录部件中"副标题"字段的值为office部件中书签副标题的值
记录部件1.SetFieldValue("副标题",Office部件1.GetBookMarkValue("副标题"))
获取书签值功能效果展示:
 
注:因为文档中的书签很容易遭到破坏,因此不建议大量使用该方法
 
 
2.6、office部件功能:存为本地文档
 
存为本地文档功能和打开本地文档功能正好相反,当在平台中编辑的文档是第一次编辑时,我们往往希望在本地也保存一份留作备份,这时候调用存为本地文档功能即可轻松实现目的。具体代码如下:
'设置文档编辑模式为:可以编辑、无痕迹,不可手写批注
Office部件1.EditType="1,0"
 
dim fileName=记录部件1.GetFieldValue("标题")
Office部件1.InnerControl.FileName=记录部件1.GetFieldValue("标题")
dim path= Office部件1.InnerControl.WebSaveLocal()
Office部件1.InnerControl.WebAcceptAllRevisions(path)
Office部件1.InnerControl.FileName=fileName
 
Office部件1.EditType="4,0"
 
if isnull(path)=false then
 if ShowQuestion("保存成功,是否打开文件?") then
  OpenFile(path)
 end if
end if
 
注:当“存为本地文档”功能中“文档编辑模式”设置为“只读”时,导出到本地的文档也只能查看,不能编辑修改
 
存为本地文档功能效果展示:
 
 
2.7、office部件功能:打开签名窗体
 
在实际工作中,往往需要文档审阅人在审阅完文档后,签上自己的名字,以表示其已经审阅过该文档内容;打开签名窗体功能可轻松实现该目的。具体代码如下:
'Office部件1.OpenSignature("签名位",0,0)
'第一个100表示相对文档起始位置的左边距,第二个100表示相对文档起始位置的上边距
Office部件1.OpenSignature(100,200)
 
打开签名窗体功能效果展示:
 
 
2.8、office部件功能:打开签名或印章检验窗口
 
打开签名或印章检验窗口,检验签名或印章是否合法有效
'打开签名或印章检验窗口
Office部件1.ValidateSignatures()
打开签名或印章检验窗口功能效果展示:
 
2.9、office部件功能:调用模板功能
 
此方法仅在需要调用模板的时候设置;一般情况下,可以通过属性栏进行选择
但是在实际运用中,常常需要根据不同情况调用不同的模板;这时我们就需要用到调用模板的功能
'调用模板,模板ID可通过(select * from delit_office_template)查询出来
Office部件1.TemplateId="950a3d8890484556a641235830262b82"
'刷新数据
Office部件1.RefreshData()
 
调用模板功能效果展示:
点击调用模板功能前:
点击调用模板功能后:
 
Office部件除了上述功能外,还有很多功能;例如:
 
编辑签名:根据传入的签名ID,获取签名内容,打开签名窗口进行编辑,然后重新生成新的签名,只能用于文字批注,手写批注无法获取文字内容
Office部件.EditSignature("签名ID")
 
删除签名:根据签名ID,删除签名
Office部件.DeleteSignature("签名ID")
 
设置签名的绝对位置:重新设置签名的绝对位置,可以采用此方法移动签名,将签名重新定位
Office部件.SetSignatureLocation("签名id",1,1)
 
清空当前手写批注:清空当前手写批注,重新根据文档生成手写批注页
Office部件.ReCreateHandComment()
 
 
将dataTable生成表格,插入到文档书签位置:此操作需要安装.net可编程扩展,word2007默认已安装,word2003需要安装
dim dt=ExecuteSelect("数据库名称","SQL语句")
Office部件.InsertDataTable("书签名","表名",dt,true)
 
创建一个新文档:创建一个word内容空文档
Office部件.CreateNew("doc")
 
在当前文档中指定的书签位置插入文件:此功能可以将正文文件插入到模板中,实现模板套红
Office部件.InsertFile ("书签名","要插入文档ID")
 
想了解更多office部件功能,请联系度量科技开发部
 
1

路过

鸡蛋

鲜花

握手

雷人

刚表态过的朋友 (1 人)

发表评论 评论 (1 个评论)

回复 陈晓龙 2018-7-21 17:59
     写得不错,又长知识了!

facelist

您需要登录后才可以评论 登录 | 立即注册

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-12-19 09:02 , Processed in 0.263868 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部