本帖最后由 Winny 于 2021-12-28 14:45 编辑
在实际项目中,单元格往往会设置成当前时间,但是用户在获取时,其实是想获取的并不是时间类型的对象,而是单元格当前显示的格式化字符串。
本文会详细介绍,如何给单元格设置时间类型并按照规定的格式化类型展示,在最终获取时,获取格式化后的字符串。
Step1: 设置单元格为当前时间;
- let sheet = spread.getActiveSheet()
- let date = new Date()
- sheet.setValue(0,0,date)
复制代码 设置完成后,在A1单元格显示的其实是格林威治时间。
Step2: 设置单元格格式,将时间类型的内容显示为对应的格式化后的字符串;
- sheet.getCell(0,0).formatter('YYYY-MM-DD')
复制代码 Step3: 获取单元格中的时间;
在SpreadJS中,获取单元格原始内容调用的API为sheet.getValue(rowIndex,colIndex),如果用该方法获取之前设置的时间单元格内的内容,得到的仍旧是时间对象,显示的是一个格林威治时间。
如果想要获取格式化后的字符串,需要调用API,sheet.getText(rowIndex,colIndex),这时,获取对应的时间单元格,得到的内容是"YYYY-MM-DD"格式化后的日期。
在用户实际项目中,对于普通类型,需要使用getValue()方法,而获取时间时,大部分是希望使用getText()方法。此时,可以先使用getValue()方法获取单元格的内容,之后判断其是否为时间类型,如果是时间类型,则将当前值覆盖为getText()方法获取的内容,示例代码如下:
- sheet.bind(GC.Spread.Sheets.Events.CellClick, function (sender, args) {
- let {sheet,row,col} = args
- let value = sheet.getValue(row,col)
- if(value && value instanceof Date){
- value = sheet.getText(row,col)
- }
- alert(value)
- })
复制代码
实际项目中,可以对绑定的CellClick中的方法进行封装,形成一个业务代码。
参考demo:https://jscodemine.grapecity.com/share/d_gjHi43zUyyBIsRWyTLWQ/
demo所在平台部署在国外,加载时间可能久一些,请耐心等待哦~
|
|