XLSForm 是一项开放标准,用于简化表单的创作。 可以使用电子表格以便于阅读的格式进行创作。 有关 XLSForm 的信息,请访问 https://xlsform.org/。 Survey123 支持大多数(并非所有)XLSForm 标准的要素。
系统提供了多种选项,用于创作符合 XLSForm 的电子表格。 Microsoft Excel 是最常用的工具,也可以使用 Kingsoft Spreadsheets、Google Sheets 和 OpenOffice Calc。 系统还提供在线 XForms 构建器,该构建器可导出与 ArcGIS Survey123 结合使用的 XLSForm 电子表格。
为了帮助您创作表单,ArcGIS Survey123 包含 Survey123 Connect 桌面工具,该工具可与 XLSForm 创作工具结合使用以创建 XLS 文件。 Survey123 Connect 允许在创作或编辑 XLSForm 文件时对其进行预览、将表单发布到 ArcGIS Online 和 ArcGIS Enterprise,以及基于数据采集的表单规范来创建要素图层。 ArcGIS Survey123 Connect 可用于 Windows。
将表单发布到 ArcGIS 后,可以使用 Survey123 网站将您的表单与 ArcGIS 组织的成员进行共享。 您还可以对通过 Survey123 外业应用程序采集的所有数据的地图和表格进行分析,并导出调查结果。
考虑到本主题的目的,假设您使用ArcGIS Survey123 Connect 和 Microsoft Excel 来创作表单。
每个 Excel 工作簿通常具有两个工作表:调查和选项。 下文还将对第三个工作表 settings 进行说明。 工作表具有一组强制列,必须显示这些列,表单才能正常运行。 此外,每个工作表还具有一组可选列,这些可选列允许进一步控制表单中各个条目的行为。 每个强制列的每个条目必须均具有值,但可将可选列留空。 无论强制或可选,添加到 Excel 工作簿的列可以任何顺序进行显示。 您可以忽略可选列并将任意数量的行留空。 将忽略所有 .xls 文件格式,因此可以使用分割线、阴影和其他字体格式以提高表单的可读性。
调查工作表
此工作表可以为表单提供整体结构。 其中包含问题的完整列表以及有关如何在表单中显示问题的信息。 每行通常表示一个问题;但是,可以将以下所述的更多功能添加到表单,以改善用户体验。
调查工作表具有三个强制列:类型、名称以及标注或提示。
- 类型列可指定添加的 XLSForm 问题类型。 针对此列,系统提供详细定义的可能问题类型列表。
- 名称列可确定要素图层中字段的名称,问题的答案将存储在该字段中。 该列中不允许使用空格或特殊字符。 每个图层中所有问题的名称必须唯一。
- 标注和提示列包含问题的文本。 这是您将在表单中看到的文本。 一个问题至少需要一个标注或提示;建议提供标注以避免警告消息。 这些列中允许使用空格和特殊字符。 或者,可以使用翻译列。 标注和提示还支持有限的 HTML 代码和变量,这些代码和变量将在调查中替换为其他问题的响应。 有关详细信息,请参阅注释。
下表包含 Survey123 支持的所有列。 这些列包含在 Advanced 模板的调查工作表中,并按照其在工作表中出现的顺序在此表中列出。
| 列 | 描述 |
|---|---|
| type | 从提供的列表中选择问题类型。 如果使用 select_one 或 select_multiple 问题,请输入有效的列表名称。 |
| name | 要素图层中的字段名称。 |
| label | 您的调查中显示的问题标签。 |
| hint | 有助于回答调查问题的信息。 |
| guidance_hint | 附加信息,仅在按下图标后显示。 |
| appearance | 选择此字段在调查中的外观。 |
| 必填 | 选择 yes 以要求在此字段输入值后才可完成调查。 |
| required_message | 当必填字段没有响应时,将显示此列的消息以提示输入答案。 |
| readonly | 选择 yes 将此字段中的值设置为只读。 在调查中无法编辑这些值。 |
| default | 设置字段的默认值。 将使用默认值预填充调查。 此设置可以通过提供常用答案或显示预期的答案选择类型来节省时间。 |
| calculation | 使用前面问题的值执行计算(例如,${number} * 100)。 引用计算字段以显示结果(例如,The answer is ${calc})。 |
| constraint | 限制可输入的数字范围(例如,.>0 和 .<100)。 可与所有问题类型配合使用。 |
| constraint_message | 当不满足约束条件时,将显示此消息以提示输入有效答案。 |
| relevant | 这将允许您基于对上一个问题的回答跳过问题或显示其他问题。 通过满足相关列中的条件(例如,${name} = 'value')使问题变得可见。 由此列隐藏的问题仅提交空值。 |
| choice_filter | 使用级联选择时,此字段保留表达式以匹配“选项”选项卡上的其他属性列(例如,attribute = ${value})。 |
| repeat_count | 此值指定重复中可用的记录数。 指定重复计数后,无法在重复中添加或删除记录。 |
| media::audio | 将音频文件复制到工程的媒体子文件夹,并输入音频文件的名称(例如,audio.mp3)以将音频与您的问题一同显示。 |
| media::image | 将图像文件复制到工程的媒体子文件夹,并输入图像文件的名称(例如,image.jpg)以将图像与您的问题一同显示。 |
| bind::type | 一种字段类型,用于覆盖问题的默认字段类型。 |
| bind::esri:fieldType | 定义要素图层中的目标字段类型。 可用于覆盖默认字段类型(例如,calculate 和 select_one 字段默认为字符串。 要将要素图层中的值保存为整数,请选择 esriFieldTypeInteger。 |
| bind::esri:fieldLength | 定义要素图层中的目标字段长度。 可用于覆盖默认字段长度。 |
| bind::esri:fieldAlias | 为要素图层中的字段别名提供值。 可以用于覆盖从问题标签派生的默认字段别名值。 |
| body::esri:style | 提供表达式以定义问题的样式和行为(例如,组和重复的背景颜色)。 |
| bind::esri:parameters | 提供特定于 Survey123 的问题参数(例如,在编辑调查时,用于控制重复行为的参数)。 |
| bind::esri:workflow | 提供参数以使调查可用于测距仪测量模式。 |
| parameters | 为问题提供标准 XLSForm 参数(例如,距离问题的 start、end 和 step 参数)。 |
| body::accept | 设置文件问题接受的文件类型。 接受文件扩展名,其中多个文件扩展名以逗号分隔(例如,.jpg, .png)。 |
| body::esri:visible | 这将允许您基于对上一个问题的回答跳过问题或显示其他问题。 通过满足 body::esri:visible 列中的条件(例如,${name} = 'value')使问题变得可见。 由此列隐藏的问题仍包含和提交值。 |
| body::esri:inputMask | 提供表达式以使用输入掩膜,通过使用字符和符号来提供一系列数据条目格式。 |
| label::language (xx) | 为您的问题标注提供翻译。 语言必须由其名称和代码指定(例如,label::Español (es))。 为每种语言添加一个新列。 语言列表将显示在调查的下拉菜单中。 |
| hint::language (xx) | 为您的问题提示提供翻译。 语言必须由其名称和代码指定(例如,hint::Español (es))。 为每种语言添加一个新列。 语言列表将显示在调查的下拉菜单中。 |
| guidance_hint::language (xx) | 为您的指导提示提供翻译。 必须通过其名称和代码指定语言(例如,guidance_hint::Español (es))。 为每种语言添加一个新列。 语言列表将显示在调查的下拉菜单中。 |
| required_message::language (xx) | 为未回答必答问题时显示的消息提供翻译。 语言必须由其名称和代码指定(例如,required_message::Español (es))。 为每种语言添加一个新列。 语言列表将显示在调查的下拉菜单中。 |
| body::accuracyThreshold | 提供阈值(以米为单位)的数值,若高于该阈值,则将不接受位置值。 适用于地理点及 geoshape 和 geotrace 问题的折点。 |
| bind::esri:warning | 如果不满足条件,请应用显示警告的表达式。 |
| bind::esri:warning_message | 如果未满足 bind::esri:warning 的条件,则会显示该消息。 |
| bind::saveIncomplete | 如果应用程序要在完成问题后自动保存响应,则设置为真。 |
选择工作表
此工作表用于指定多项选择问题的答案选择。 每行表示一个答案选择。 具有相同列表名称的答案选择会被视为一组相关选择的组成部分,并且将针对问题同时显示。 同时允许针对多个问题(例如,是或否问题)重用一组选择。
选择工作表具有三个强制列:列表名称、名称和标注。
- 列表名称列用于对一组相关答案选择进行分组。 具有相同列表名称的选择将表示为问题的一组答案。
- 名称列可指定 ArcGIS 中将保留的值。 名称列中的值不接受特殊字符。 不建议在选项列表中包含重复的选项名称。 有关重复选项名称的详细信息,请参阅多项选择问题。
- 标注列可按照您需要答案选择呈现在表单中的效果准确显示答案选择。 或者,可以使用标注翻译列。
在 Excel 中创作表格时,您使用的语法必须准确。 例如,如果将 choices 写为 Choices 或者 choice,则表单无法运行。
设置工作表
设置工作表是可选的,并且可进一步对表单进行自定义。 可用的自定义包括对表单进行编辑时所显示的标题、用于唯一标识各个完成表单的实例名称以及调查的唯一版本标识符等。 有关详细信息,请参阅设置。
补充工作表
Survey123 模板包含工作表,这些工作表包含可在表单中使用的属性、运算符和函数。 这些工作表还可用于填充调查和设置工作表中的下拉列表以及其他数据验证规则。 要确保数据验证能够按预期工作,建议您不要修改补充工作表的内容。
问题类型
XLSForm 支持各种问题类型。 例如,要采集商店的名称和位置,请记录如下信息:

下表列出了您可以在 XLSForm 的类型列中输入的问题,可接受的问题输入以及发布表单时在该问题的关联 ArcGIS 要素图层中创建的字段类型。 调查作者可以为许多这样的问题类型更改字段类型。 有关字段类型的详细信息,请参阅 Esri 自定义列。
| 问题类型 | 答案输入 | 默认字段类型 |
|---|---|---|
| integer | 整数数值输入。 | esriFieldTypeInteger |
| decimal | 小数输入。 | esriFieldTypeDouble |
| range | 输入给定范围的数值。 | esriFieldTypeInteger |
| text | 自由文本答案。 | esriFieldTypeString |
| select_one list_name | 多项选择问题,用户在其中只能选择一个答案。 将 list_name 替换为选项列表的名称。 可以更改字段类型;但是,在外业应用程序中,用于表达式中的选择名称将始终被视为字符串。 | esriFieldTypeString |
| select_multiple list_name | 多项选择问题,用户在其中可以选择多个答案。 将 list_name 替换为选项列表的名称。 无法更改字段类型,并且在外业应用程序中,用于表达式中的选择名称将始终被视为字符串。 | esriFieldTypeString |
| rank list_name1 | 评级问题;对选项列表进行评级排序。 将 list_name 替换为选项列表的名称。 无法更改字段类型,并且在外业应用程序中,用于表达式中的选择名称将始终被视为字符串。 | esriFieldTypeString |
| note | 在屏幕上显示注释;无输入。 也可以显示隐藏的计算。 | esriFieldTypeString |
| geopoint | 采集单个 GPS 坐标。 无法更改字段类型。 | esriFieldTypeGeometry |
| geotrace | 在地图上采集线。 无法更改字段类型。 | esriFieldTypeGeometry |
| geoshape | 在地图上采集面。 无法更改字段类型。 | esriFieldTypeGeometry |
| date | 日期输入。 | esriFieldTypeDate |
| 时间 | 时间输入。 | esriFieldTypeString |
| dateTime | 接受日期和时间输入。 | esriFieldTypeDate |
| image | 拍照。 | 附件 |
| begin group | 开始一组问题。 | 不适用 |
| end group | 结束一组问题。 | 不适用 |
| begin repeat | 开始一组重复问题。 | 不适用 |
| end repeat | 结束一组重复问题。 | 不适用 |
| 计算 | 针对表单中的值执行计算。 此问题类型将被隐藏,并且不显示在表单中。 | esriFieldTypeString |
| username2 | 登录到 ArcGIS Online 或 ArcGIS Enterprise 时,此字段自动使用账户用户名进行填充。 此问题类型将被隐藏,并且不显示在表单中。 | esriFieldTypeString |
| email2 | 登录到 ArcGIS Online 或 ArcGIS Enterprise 时,此字段自动使用账户电子邮件地址进行填充。 此问题类型将被隐藏,并且不显示在表单中。 | esriFieldTypeString |
| hidden | 不显示在表单上的字段。 使用 bind::esri:fieldType 和 bind::esri:fieldLength 列指定数据方案。 | esriFieldTypeString |
| barcode | 扫描条形码。 | esriFieldTypeString |
| start | 调查的开始日期和时间。 | esriFieldTypeDate |
| end | 调查的结束日期和时间。 | esriFieldTypeDate |
| deviceid | Survey123 生成的唯一 ID,表示采集调查的特定设备。 它不同于移动设备的国际移动设备识别码 (IMEI),因为运行 Survey123 的设备可能不具有 (IMEI)。 此问题类型将被隐藏,并且不显示在表单中。 | esriFieldTypeString |
| audio | 记录音频样本。 | 附件 |
| 文件1 | 将文件上传至设备。 | 附件 |
1 - 文件和评级问题类型目前仅在 Survey123 外业应用程序中受支持。
2 - 更灵活的方法是使用 pulldata("@property") 函数检索值。 请参阅设备、用户和调查属性。
在 Survey123 Connect 中,尝试问题类型示例以查看包含 Survey123 支持的所有问题类型的表单。 请参阅问题类型参考,以了解这些问题类型在 Survey123 Web 设计器中是如何表示的。
元数据
XLSForm 具有以下适用于元数据采集的数据类型选项:
| 元数据类型 | 描述 |
|---|---|
| start | 调查的开始日期和时间。 |
| end | 调查的结束日期和时间。 |
| username | 记录已登录到 ArcGIS Online 或 ArcGIS Enterprise 的当前用户的用户名。 此数据类型无输入。 |
| 记录已登录到 ArcGIS Online 或 ArcGIS Enterprise 的当前用户的电子邮件地址。 此数据类型无输入。 | |
| deviceid | Survey123 生成的唯一 ID,表示采集调查的特定设备。 它不同于移动设备的 IMEI,因为运行 Survey123 的设备可能不具有 IMEI。 |
注:
尚不支持以下 XLSForm 元数据元素:subscriberid、simserial 和 phonenumber。
要采集此元数据的所有元素,请在调查开头添加以下内容:

ArcGIS Survey123 可自动捕获上述元数据条目。 这些条目在表单中不会表示为问题,但是,提交调查后,即可查看值。
如果添加 start 或 end 类型,则 ArcGIS Survey123 将针对调查自动启用要素图层的时间。 通过这种方式,您可以基于提交数据的日期对调查内容进行过滤。 如果要准确了解从打开表单到完成其标记过程中花费的时间,则添加 start 和 end 条目非常有用。
提示
有时,您会希望向表单上的问题添加提示,用来指导用户如何回答问题,但是又不希望将提示作为问题的一部分。 您可以向 XLSForm 中的问题添加提示。 添加提示列并添加提示消息。 请参阅以下示例:

注:
begin repeat 和 begin group 问题不支持提示。
您还可以使用 guidance_hint 列添加问题的指导提示。 指导提示进一步指导用户如何回答问题,但在用户点击显示在提示一侧的指导提示按钮之前,将保持隐藏状态。 仅当问题提示已经存在时,才能使用指导提示。

占位符文本
通过在 body::esri:style 列中设置 placeholderText 参数,还可以为接受键入输入的问题(例如文本、整数和小数问题,以及具有自动完成外观的选择问题)提供占位符文本。 借助 placeholderText=@[hint] 或 placeholderText=@[guidance_hint],提示或指导提示将被隐藏,而提示文本将被放置在问题的输入区域内。 当问题为空时,占位符文本会显示在输入区域中。
注:
Survey123 web 应用程序中不支持占位符文本。
更新模板
注:
本部分将介绍仅在 Survey123 Connect 中可用的功能。 此功能在 Survey123 Studio 中不可用。
高级模板包含 Survey123 外业应用程序中支持的所有 XLSForm 功能,可在 Survey123 Connect 的新建调查对话框上找到该模板。 将定期更新该模板以新增功能并增强调查创作体验。 可以继续使用先前版本的模板,不会出现问题,但是您可能希望将现有调查更新为最新的 XLSForm 模板,以利用最新更改。
更新 XLSForm 模板工具用于将调查的现有 XLSForm 更新为最新版本的高级模板。 为了实现此目的,需要将调查、选择和设置工作表的内容复制到其在新模板中的对应行和列。 已添加的所有列以及 external_choices 工作表(如果正在使用外部选择)也会复制到新模板。
要运行该工具,必须在 Survey123 Connect 中配置 Python 环境。 有关详细信息,请参阅配置 Python。
在 Survey123 Connect 中,打开要更新的调查。 单击工具,然后单击更新 XLSForm 模板。 随即出现一个对话框,用于在工具运行期间显示消息。 在完成该过程后,调查文件夹中的 .xlsx 文件将更新为最新版本,并将在 Survey123 Connect 中重新加载表单预览。 如果在运行工具时遇到错误,将保留现有 XLSForm。
注:
调查的 XLSForm 必须为 .xlsx 文件。 无法对 .xls 文件运行更新 XLSForm 模板工具。
建议验证更新后的 XLSForm 中是否存在原始 XLSForm 中的列、数据验证、单元格格式化以及字体样式。 该工具将在 C:\Users\<username>\ArcGIS\My Survey Designs\<surveyName>\debug\template_updater 中创建现有 XLSForm 的备份和日志文件。 要从备份恢复调查,将 .xlsx 文件从 template_updater 文件夹复制到调查的根文件夹。 删除现有 XLSForm 并重命名备份以与原始表单匹配。
注:
每行的第一列中单元格的填充颜色将应用于更新后的模板的整行。
对于多语言调查,将从更新后的模板中排除 label::language (xx) 和 hint::language (xx) 等默认语言列。
特殊字符
问题名称和选项名称不应包含特殊字符,如空格、逗号、连字符、圆括号、方括号或诸如 $、% 和 # 等字符。 select_multiple 问题的选项名称不得包含空格或逗号。