前言:工作中常遇到客户和同事朋友询问InfoPath的相关问题,博客读者也常有来信,表示与InfoPath相关的教程过少。说实话,我本人其实也没有看过InfoPath的学习资料,全靠自己的理解和经验积累。最近我总结了一些心得,与大家共享,希冀抛砖引玉,共同进步。

InfoPath是Microsoft Office系列产品中的一员,相较于Word、Excel,对于InfoPath很多用户还是比较陌生的。InfoPath是Office家族中专门用于收集数据的表单工具,使用InfoPath可以快速地创建出表单模板,规范数据,达到更快地获取、汇总有效信息的目的。

从InfoPath 2003 开始,InfoPath也已经历经三个版本,目前最新的正式版本是InfoPath 2010。本系列文章中将以InfoPath 2010为例,InfoPath2007在功能上和2010相差不多,概念相通。

InfoPath分为两个模式:设计和填写。在2010中干脆变成了两个客户端:InfoPath Designer和InfoPath Filler。设计模式是给表单设计人员使用的,用来设计表单模板;填写模式是给普通用户用的,基于表单模板进行数据填写。

应用InfoPath客户端的简单场景是,企业的表单设计人员用设计模式设计好表单模板,保存为.xsn文件,并以电子邮件或者其它形式共享给普通用户,普通用户基于设计好的表单模板进行填写,填写好后保存为.xml再提交给统计汇总人员。但是实践过程中我们会发现,这样的使用方式会让普通用户感到困惑,要学习使用一个新的客户端是用户非常不愿意接受的。所幸,我们有SharePoint,我们可以把设计好的表单模板发布到SharePoint上,并借助Forms Services将InfoPath表单直接在浏览器中渲染出来,用户不再需要安装客户端,在浏览器中即可直接填写表单,大大提升用户体验。

将InfoPath和SharePoint结合,可以满足绝大多数与表单相关的需求,后面我会选择几个典型的场景来讲解。今天先从最基础的开始 -- 如何设计一个简单的InfoPath表单模板,简单来说,可以概括为以下四步:

【选择表单模板】

打开InfoPath Designer 2010客户端,第一个界面是选择表单模板,InfoPath内置了几种表单模板,使InfoPath可以基于我们提供的数据库表、Web服务、XML文件、SharePoint数据源自动创建出数据源结构。在没有这些需求的情况下,我们可以选择“空白表单”:

InfoPath基础应用教程-1 设计一个简单的表单模板_SharePoint

在选择好表单模板后,需要检查一下表单的兼容性,点击文件-->信息-->窗体选项(2007版点击工具-->表单选项):

InfoPath基础应用教程-1 设计一个简单的表单模板_基础_02

在“兼容性”中查看当前的表单是否为Web兼容模式(Web浏览器表单):

InfoPath基础应用教程-1 设计一个简单的表单模板_InfoPath_03

对于需要发布到SharePoint上的表单,我们需要确认表单为Web兼容模式,否则发布后将无法在浏览器中进行填写。

【创建数据源】

默认情况下,我们会在右侧窗格中看到主数据源,主界面为一张空白的表单:

InfoPath基础应用教程-1 设计一个简单的表单模板_教程_04

我们创建的表单模板,其中的数据都要存在主数据源中,所以我们首先需要在主数据源中创建出我们需要收集的数据的数据结构。

myFields是主数据源中默认的组,我们创建的其它域组都要在myFields下,我们可以修改它的名称,但不能删除它。

在添加域组时,我们看到其中有这样几种类型:

InfoPath基础应用教程-1 设计一个简单的表单模板_教程_05

  • 域(元素):可以理解为字段,就是我们将要在表单收集的数据字段。每个域本身的数据类型又分为:

InfoPath基础应用教程-1 设计一个简单的表单模板_InfoPath_06

根据字段中需要存储的数据来决定选用哪种类型。

注意到下面的“重复”选框,勾选上即代表该域成为重复域,重复域用于储存多值的情况,例如每个人可能会对应多个联系电话:

InfoPath基础应用教程-1 设计一个简单的表单模板_基础_07

重复域的图标区别于其他域,多了一个下箭头。

  • 组:是域的集合,用来组织域。组可以嵌套,即组可以包含组。组也可以重复组:

InfoPath基础应用教程-1 设计一个简单的表单模板_SharePoint_08

  • 域(属性):属性,不能为空。可以添加在域(元素)的下级。不可重复。
  • 组(选项):特殊的组,其中包含的域或组,可以作为选项进行替换。例如,我们需要用户填写联系方式,手机号码、家庭电话二选一即可,就可以使用组(选项),设置如下:

InfoPath基础应用教程-1 设计一个简单的表单模板_基础_09

填写效果如下:

InfoPath基础应用教程-1 设计一个简单的表单模板_InfoPath_10

默认显示家庭电话,点击左侧的图标,即可切换为手机号码:

InfoPath基础应用教程-1 设计一个简单的表单模板_SharePoint_11

【设计表单样式】

根据需要创建好数据源之后,就可以开始设计表单了。

表单由视图组成,每个视图中可以包含多个控件,每个控件(除按钮)都需要绑定到对应的数据源上。

向视图页面中添加控件可以采用两种方式:

  • 从控件窗格中直接选取需要的控件

在设计主界面中将光标移至需要添加控件的位置,在控件窗格点击需要的控件(注意取消下方“自动创建数据源”的选择):

InfoPath基础应用教程-1 设计一个简单的表单模板_教程_12

在弹出的界面中选择要绑定的数据源:

InfoPath基础应用教程-1 设计一个简单的表单模板_教程_13

  • 在数据源窗格中选择需要的控件

在需要添加进视图的域组上点击右键:

InfoPath基础应用教程-1 设计一个简单的表单模板_基础_14

在菜单中单击需要的控件(如果需要的控件不在菜单中,点击“其他”)。

对于已经添加进视图的控件,也可以通过点击右键,选择“更改控件”来修改控件的类型:

InfoPath基础应用教程-1 设计一个简单的表单模板_Forms Services_15

在已添加到设计主界面的控件上点击右键:

InfoPath基础应用教程-1 设计一个简单的表单模板_基础_16

可以在属性编辑界面中修改控件的属性:

InfoPath基础应用教程-1 设计一个简单的表单模板_Forms Services_17

不同控件中可以定制的属性也不同,需要各位通过实践自己来熟悉。

按照需要调整各控件在视图中的位置及布局:

InfoPath基础应用教程-1 设计一个简单的表单模板_SharePoint_18

点击左上角的预览按钮(或按F5),可以预览效果:

InfoPath基础应用教程-1 设计一个简单的表单模板_InfoPath_19

InfoPath基础应用教程-1 设计一个简单的表单模板_InfoPath_20

【保存/发布表单模板】

  • 对于客户端填写表单的场景,保存后点击文件-->发布-->电子邮件/网络位置:

InfoPath基础应用教程-1 设计一个简单的表单模板_教程_21

  • 对于需要在浏览器中进行填写的表单,保存后点击文件-->发布-->SharePoint服务器:

InfoPath基础应用教程-1 设计一个简单的表单模板_基础_22

输入SharePoint服务器地址,点击下一步:

InfoPath基础应用教程-1 设计一个简单的表单模板_SharePoint_23

点击下一步,选择“新建表单库”,点击下一步,输入要新建的表单库名称,一直下一步直到发布:

InfoPath基础应用教程-1 设计一个简单的表单模板_InfoPath_24

InfoPath基础应用教程-1 设计一个简单的表单模板_Forms Services_25

点击“在浏览器中打开此表单”:

InfoPath基础应用教程-1 设计一个简单的表单模板_Forms Services_26

总结:

经过以上四步,一个简单的InfoPath表单模板已经完成。后面的文章中将继续介绍如何在此基础上对表单进行改进。