SpreadJS数据绑定合并部分单元格
本帖最后由 Winny 于 2022-3-8 15:54 编辑SpreadJS种,借助数据绑定,可以很好的实现模板与数据分离。这样,对于一些个人信息填报,检测报表等场景,可以始终在服务端维持一张空表,用户填写的数据,通过调用sheet.getDataSource().getSource()就可以很方便的获取到。在后续做数据的二次分析时,这就会十分有用。<br>在一些特定的场景中,用户希望最终绑定形成的表类似于分组表,某些部分值相同时,需要自动进行合并,以下表为例:
其中红色区域内的东西,就属于需要自动根据内容合并的部分,本文会详细讲解如何使用数据绑定的方式来实现这一需求。
step1: 制作表单;<br>使用在线表格编辑器中,点击数据Tab下的工作表绑定模块,设计模板。
右侧的数据源列表,可以选择手动添加,也可以自己构建一个数据源json结构,关于数据源设置有不了解的可以自行在论坛搜索。
Step2:根据绑定字段,创建源数据。
源数据一般情况,是用户多源整合查询后返回给前端的数据。这里由于只是一个前端的演示demo,直接写了一个变量(data)来代替数据源。
let data = {
date: '2021-09-10',
details:[
{
num: 1,
subject: '路径',
content: '树木',
status: '',
result: '',
charge: '',
participants:''
},{
num: 1,
subject: '路径',
content: '建筑物',
status: '',
result: '',
charge: '',
participants:''
},{
num: 1,
subject: '路径',
content: '其它',
status: '',
result: '',
charge: '',
participants:''
},{
num: 2,
subject: '杆塔拉线',
content: '基础',
status: '',
result: '',
charge: '',
participants:''
},{
num: 2,
subject: '杆塔拉线',
content: '铁塔',
status: '',
result: '',
charge: '',
participants:''
},{
num: 2,
subject: '杆塔拉线',
content: '杆线',
status: '',
result: '',
charge: '',
participants:''
},{
num: 2,
subject: '杆塔拉线',
content: '拉线',
status: '',
result: '',
charge: '',
participants:''
},{
num: 2,
subject: '杆塔拉线',
content: '倾斜',
status: '',
result: '',
charge: '',
participants:''
},{
num: 2,
subject: '杆塔拉线',
content: '其它',
status: '',
result: '',
charge: '',
participants:''
}
]
}
Step3: 绑定数据;
let source = new GC.Spread.Sheets.Bindings.CellBindingSource(data)
let sheet = spread.getActiveSheet()
sheet.setDataSource(source)
Step4: 设置区域自动合并。
let table = sheet.tables.findByName('details')
let tableRange = table.dataRange()
let range = new GC.Spread.Sheets.Range(tableRange.row,tableRange.col,tableRange.rowCount,2)
sheet.autoMerge(range,GC.Spread.Sheets.AutoMerge.AutoMergeDirection.rowColumn)
用户填写数据后,使用sheet.getDataSource().getSource()来获取填写完成的数据,可以自己尝试一下。
demo地址: https://jscodemine.grapecity.com/share/xoun5sBb9UuOoCLP-urF0g/
页:
[1]