多维表对象库参考
| 对象 | 说明 |
|---|---|
| Sheets | 表的集合,里面有操作返回数据表列表,添加/删除数据表,监听数据表操作事件 |
| Sheet | 数据表,提供修改表的属性,返回数据表的视图集合,访问数据表的记录,可监听数据新增数据、删除表、修改表名等事件 |
| Views | 视图集合,里面有数据表的视图列表,可以添加/删除视图,监听视图的操作事件 |
| View | 视图,提供修改视图属性,访问视图的记录,监听视图事件 |
| FieldDescriptors | 字段定义集合,提供字段的列表,添加/删除字段,监听字段操作事件 |
| FieldDescriptor | 字段定义,可以修改字段的属性,监听字段的事件 |
| RecordRange | 记录,提供修改记录的数据,支持各种字段类型的修改 |
| DBCellValue | 单元格数据,单元格为复杂的数据类型时,需要使用DBCellValue来设置数据 |
| Fields | 网格视图列的集合,可以访问视图的列属性 |
| Field | 网格视图列,提供修改列宽和隐藏/显示列的方法 |
脚本示例
示例1 选中区域快速批量填值
javascript
function main(){
const time = getNowTime()
const date = getNowDate()
ActiveView.Selection(null, ["@日期", "@时间", "@分类"]).Value = [date, time, 'B']
}
// 获取当前时间,格式为 "hh:mm:ss"
function getNowTime() {
return (new Date()).toTimeString().split(" ")[0]
}
// 获取当前日期,格式为 "yyyy:MM:dd"
function getNowDate() {
const date = new Date()
return date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate()
}
main()
示例2 快速实现“一键归档”
下面代码实现了一个文件中两张数据结构相同的表 把表一中的已完成的数据插入到表二中,并删除表一中数据 表结构如下图所示:
| 名称 | 分类 | 数字 | 日期 | 完成 |
|---|---|---|---|---|
| 1 | A | 100 | 2024/4/10 | ✅ |
javascript
function main() {
const criterias = []
criterias.push(Criteria("@分类", "Equals", ["B"]))
criterias.push(Criteria("@完成", "Equals", ["1"]))
// 创建filters
const filters = []
const filter = {Criterias: criterias, Op: "AND"}
filters.push(filter)
const range1 = Sheets(1).Views(1).RecordRange.Condition(filters, "AND")
if(!range1){
return
}
const length = range1.Count
const range2 = Sheets(2).Views(1).RecordRange.Add(1, undefined, length)
range2.Value = range1.Value
range1.Delete()
}
main()
示例3 快速删除空白数据
删除名称字段中值为空的数据
javascript
function main() {
const criterias = []
criterias.push(Criteria("@名称", "Equals", ['']))
const filters = []
const filter = {Criterias: criterias, Op: "AND"}
filters.push(filter)
Sheets(3).Views(1).RecordRange.Condition(filters, "AND").Delete()
}
main()
例子4 快速创建一张表
javascript
function main() {
Application.Sheets.Add(
{
Type:'xlEtDataBaseSheet',
Config:{
fields:
[
{fieldType:'SingleLineText',args:{fieldName:'文本',fieldWidth:15}},
{fieldType:'MultiLineText',args:{fieldName:'多行文本',fieldWidth:15}},
{fieldType:'Date',args:{fieldName:'日期',numberFormat:'yyyy/mm/dd;@',fieldWidth:15}},
{fieldType:'SingleSelect',args:{fieldName:'单选项',fieldWidth:15,listItems:[{value: '选项1', color: 4283466178},{value: '选项2',color: 4281378020}]}},
{fieldType:'Number',args:{fieldName:'数字',fieldWidth:15}},
{fieldType:'Rating',args:{fieldName:'等级',maxRating:6,fieldWidth:15}},
],
name:'数据表',
views:
[
{name:'表格视图',type:'Grid'},
{name:'表单视图',type:'Form'}
]
}
})
}
main()
例子5 格式化数据批量插入
javascript
function main(){
const range = Application.Sheets(4).Views(1).RecordRange.Add(1, undefined, 300)// 在第1行,向上方添加300条记录
const template = ["商品", 10]
const range1 = []
// 给1-300行赋值
for (let i = 1; i < 301; i++ ) {
if(i<101){
range1.push([template[0]+i,template[1],'A'])
}else if(i<201){
range1.push([template[0]+i,template[1]+10,'B'])
}else{
range1.push([template[0]+i,template[1]+10,'C'])
}
}
range.Value = range1
}
main()
例子6 监听记录变化
javascript
function main() {
let eventContext;
eventContext = Application.Sheets(1)
.Views(1)
.RecordRange(1)
.OnUpdate(data => {
const range = data;
console.log(range.Id);
console.log(range.Value);
// 取消事件监听
eventContext.Destroy();
});
Application.Sheets(1).Views(1).RecordRange(1).Value = ['名称111', 4, '选项1'];
}
main();