表格数据操作
对表格变量做读写或更新。表格变量本身见 表格变量类型。
当前模块定义
sys:tableoperation输入 21 · 输出 10 · 枚举 2
输入参数
- 表格变量
tableTable必填要操作的表格变量
- 操作类型
typeEnum必填13 个选项获取信息、添加行、更新行
获取信息默认info添加行addRow更新行update查看或编辑数据manage查询或筛选行(Selectselect清除所有行clear删除符合条件的行deleteRows删除列deleteColumns从CSV文本加载数据importCsv从Json文本加载数据importJson从Excel工作表加载数据importExcel导出文本数据export_text导出Excel文件exportExcel - 行数据
rowDataDict可选包含行数据的词典;更新行时,仅包含要更新的列的内容。
- 文本数据
dataTextText可选CSV/Json格式的文本内容
- 筛选表达式
filterExpressionText可选 - 要删除的列
deleteColumnsText可选可选。逗号','或分号';'隔开的列名,"*"表示删除所有列,"!列1,列2..."表示保留指定的列,删除其余的。
- 排序
sortText可选 - 导出的列
exportColumnsText可选可选。逗号','或分号';'隔开的列名。留空时导出所有列。
- Excel文件路径
excelFilePathText可选 - Excel工作表名
sheetNameText可选如果未指定,则取第一个工作表。工作表首行为标题行。
- 标题行号
startRowNumInteger必填标题行的行号(从1开始)。当前面有表头之类的内容时,行号会变大。
- 选择模式
gridSelectionModeEnum可选注:单元格模式不支持返回选择的行。
5 个选项单元格(类似Excel、行:0行或1行、行:1行(必选
单元格(类似Excel默认Cells行:0行或1行OneRow行:1行(必选OneRowRequired行:0、1或多行Rows行:一行或多行(必选RowsRequired - 清除已有的行
clearOldRowsBoolean可选加载数据之前是否清除现有的行数据
- 只读模式
isReadOnlyBoolean可选是否以只读模式打开
- 窗口标题
windowTitleText可选 - 帮助文本
helpTextText可选 - 使用列标题而非列名作为导出数据的标题
useColumnTitleBoolean可选 - CSV分隔符
csvDelimiterText可选导出或导入CSV数据时使用的字段分隔符。使用'\t'表示Tab。
- 窗口尺寸/位置
winSizeText可选设置选择窗口的最大尺寸,格式为:宽度,高度。支持像素数值或屏幕宽高百分比,详情请参考模块文档。
- 是否置顶显示
topMostBoolean可选是否置顶显示窗口
- 失败后停止
stopIfFailBoolean可选失败后是否停止动作
输出参数
- 是否成功
isSuccessBoolean操作是否成功
- 行数
rowCountInteger表格内的数据行数
- 影响行数
affectedRowCountInteger更新或删除、筛选的行数
- 行列表
rowsObject符合条件的行的数组
- 列的列表
columnsObject表格的列的信息列表(DataTable.Columns)
- 第一行/结果行
firstRowObject第一个符合条件的行或新添加的行,可输出为词典对象
- 选择的行列表
selectedRowsObject选择的所有行的列表
- CSV格式文本
csvExportDataText - Json格式文本
jsonExportDataText - 是否确认
isConfirmedBoolean是否点击了确认按钮
概述
先选 表格变量 和 操作类型,再按类型填写附加参数。输出随类型变化。
表格数据操作
参数说明
表格变量:要操作的表格变量。
操作类型:对表格做哪一种。点开下拉看当前全部选项。下面按类型说明。
失败后停止:遇到异常是否中止后续步骤。默认开启。
获取信息
输出:
添加行
向表格添加一行。
表格数据操作
行数据:新行各列的词典,键是列名。不必给自动生成的列(如自增列)填值。
输出 第一行/结果行:新添加的行,可输出为词典。
更新行
更新符合条件的行的某些列。1.42.38+。
表格数据操作
行数据:要更新的列和值的词典,可同时改多列。
筛选表达式:决定更新哪些行。
输出 影响行数:实际更新的行数。
查看或编辑数据
弹出窗口查看或修改表格。
只读模式:是否禁止修改。默认关闭。
窗口标题:默认「表格数据」。旧稿未写。
帮助文本:旧稿未写。
窗口尺寸/位置:可选。格式 宽度,高度,可用像素或屏幕宽高百分比。旧稿未写。
是否置顶显示:旧稿未写。
选择模式:单元格类似 Excel;也可按行单选/多选,部分模式必选。单元格模式不支持返回选择的行。旧稿未写。
排序:可选。查看时的排序。旧稿未写。
只读模式
| Id | 名称 | 说明 | 图标 | 注释 |
|---|---|---|---|---|
| 0 | 测试条目 | 这是一条测试数据 | fa:Light_Icon | 注释信息 |
| 1 | 测试条目1 | 这是一条测试数据 | fa:Light_Icon | 注释信息 |
要复制内容:拖选单元格后 Ctrl+C,或用右键菜单。
编辑模式
| Id | 名称 | 说明 | 图标 | 注释 | 操作 |
|---|---|---|---|---|---|
| 0 | 测试条目 | 这是一条测试数据 | fa:Light_Icon | 注释信息 | 编辑删除 |
| 1 | 测试条目1 | 这是一条测试数据 | fa:Light_Icon | 注释信息 | 编辑删除 |
需要事先在表格变量里定义每列的编辑方式。
- 「添加行」打开表单加新行。
- 双击单元格或点「编辑」改该行。
- 「删除」删一行。
- 「还原」恢复到打开窗口时的数据。
输出:
- 选择的行列表:当前选中的行。旧稿未写。
- 是否确认:是否点了确认。旧稿未写。
查询或筛选行(Select)
用 DataTable.Select() 取出符合条件的行。
筛选表达式:查询条件,语法见 DataView RowFilter Syntax。例如:
Id = 10Id > 20Id in (1,2,3)Name = '张三'Name <> '李四'Name in ('张三','李四','王五')Date = #2022-12-27#Name LIKE '*str*'(通配符*只能在最前或最后,不能在中间)- 布尔:
ANDORNOT,如NOT City = 'Tokyo' AND NOT City = 'Paris' - 可用
CONVERT改类型后再比。动态加载的表里数字列有时是文本,要按数字比可以写:CONVERT(序号, System.Int32) > 3
排序:可选。如 Birth DESC、Id。
输出:
- 行数:表格内的数据行数。
- 行列表:符合条件的行(
DataRow[]),可用 循环:每个 遍历。 - 第一行/结果行:第一条符合条件的行。
清除所有行
清掉表格里的全部数据。
删除符合条件的行
按筛选条件删行。
表格数据操作
输出 影响行数。
删除列
表格数据操作
要删除的列:用逗号 , 或分号 ; 分隔列名。* 表示删全部列;!列1,列2 表示保留这些列、删掉其余的。
从CSV文本加载数据
从逗号分隔文本加载到表格。可先用 读取文件 读入文本(简体中文系统里 CSV 常用 GB2312),再交给 文本数据。
表格数据操作
文本数据:CSV 文本。第一行应是列名。
清除已有的行:加载前是否清空现有行。默认开启。
CSV分隔符:字段分隔符,\t 表示 Tab。旧稿未写。
从JSON文本加载数据
从 JSON 加载。其它参数与 CSV 相同(无 CSV 分隔符)。
按 JSON 形状分两种:
-
数组:对象的 key 当列名。例如
[{"name":"张三","age":20,"City":"BeiJing"},{"name":"李四","age":21,"City":"ShangHai"}]:name age City 张三 20 BeiJing 李四 21 ShangHai -
对象(1.35.38+):自动生成 Key、Value 两列。例如
{"name":"张三","age":20,"City":"BeiJing"}:Key Value name 张三 age 20 City BeiJing
从Excel工作表加载数据
表格数据操作
工作表里应是规范的二维表。例如标题在第 4 行时,标题行号填 4,列名取该行(Name / Birth / Position):
| 行号 | Name | Birth | Position |
|---|---|---|---|
| 4(标题行) | Name | Birth | Position |
| 5 | 李四 | 1995 | 学生 |
| 6 | 王五 | 2000 | 学生 |
| 7 | 张三 | 1990 | 教师 |
Excel文件路径:完整路径。文件当前不能被占用(例如正用 Excel 打开)。
Excel工作表名:留空则读第一个工作表。
标题行号:列名所在行,从 1 计。前面有表头时会大于 1。
导出文本数据
把表格导出为 CSV 或 JSON 文本。
筛选表达式 / 排序 / 导出的列:可选。导出的列用逗号或分号分隔,留空则全部列。旧稿未写「导出的列」。
使用列标题而非列名作为导出数据的标题:旧稿未写。
CSV分隔符:导出 CSV 时的分隔符。
输出 CSV格式文本、Json格式文本、影响行数。
导出Excel文件
把表格写到一个新的 Excel 文件。
Excel文件路径:保存路径。
Excel工作表名:留空则为 Sheet1。
同样可填筛选、排序、导出的列、是否用列标题。
输出
- 是否成功:是否没有遇到异常。
- 行数:表格内的数据行数。
- 其余输出随操作类型变化,见上一节。
限制与排障
Excel 报错 Wrong Local header signature: 0xE011CFD0 时,多半是后缀和实际格式不一致:.xlsx 与 .xls 不能混用。导入 Excel 时文件不能被 Excel 打开占用。筛选表达式里的字符串要用单引号,日期用 #2022-12-27#。
相关链接
更新说明
- 20240227 增加查询筛选时转换数据类型的说明。
- 20240514 增加更新行、删除行、清空表格、删除列操作类型的说明。
更新于