dexteryao 发表于 2021-11-30 15:42:11

SpreadJS自定义时间存储类型

在SpreadJS中默认采用了OADate的格式存储时间,在数据绑定时可以获取到OADate 字符串形式的时间
如果希望获取string或者时间戳形式的日期类型可以通过一下方式实现

在数据绑定的columnInfo对象上,可以提供一个value方法来处理绑定字段。
arguments.为2个时,表示编辑数据后写入dataSource,将OADate格式的value转为Date类型再获取时间戳
arguments数量为1时,表格从dataSource取数据展示,我们讲时间戳转为Date类型返回,SpreadJS就可以在format后显示在单元格中了

var sheet = spread.getSheet(0);
sheet.autoGenerateColumns = false;
var colInfos = [
                { name: "id", displayName: "ID" },
                { name: "name", displayName: "Name", size: 100 },
                { name: "date", displayName: "Date", size: 80, formatter: "yyyy/mm/dd", value: function(item, value){
                  if(arguments.length == 2){
                        sheet.tag(value)
                        let tempDate = sheet.tag();
                        console.log(tempDate)
                        if(tempDate instanceof Date){
                            item.date = tempDate.getTime();
                        }
                        else{
                            item.date = value;
                        }
                  }
                  else{
                        if(item.date && item.date > 631123200000){
                            return new Date(item.date);
                        }
                        else{
                            return item.date;
                        }
                  }
                } },
                { name: "date", displayName: "DateValue", size: 80 }
];
sheet.bindColumns(colInfos);
sheet.setDataSource([{id:1, date:1817740800000},{},{}])

页: [1]
查看完整版本: SpreadJS自定义时间存储类型