本帖最后由 敏敏 于 2022-4-19 16:24 编辑
// 自定义数字格式
var CustomFormatterTest = function () {}
CustomFormatterTest.prototype = new GC.Spread.Formatter.FormatterBase()
// format方法中,第一个参数obj就是当前单元格的值(带类型)
CustomFormatterTest.prototype.format = function (obj, conditionalForeColor) {
return that.number_format(obj, 2, '.', ',', false)
}
/*
* 参数说明:
* number:要格式化的数字
* decimals:保留几位小数
* decPoint:小数点符号
* thousandsSep:千分位符号
* isRoundUp:是否四舍五入
* */
number_format (number, decimals, decPoint, thousandsSep, isRoundUp) {
number = (number + '').replace(/[^0-9+-Ee.]/g, '') const n = !isFinite(+number) ? 0 : +number
const prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
const sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
const dec = (typeof decPoint === 'undefined') ? '.' : decPoint
let s = ''
const toFixedFix = function (n, prec) {
var k = Math.pow(10, prec)
// 是否四舍五入
if (isRoundUp) {
return '' + Math.round(n * k) / k
}
// floor 实现了只舍去不进位的逻辑
return '' + Math.floor(n * k) / k
}
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
var re = /(-?\d+)(\d{3})/
while (re.test(s[0])) {
s[0] = s[0].replace(re, '$1' + sep + '$2')
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || ''
}
// 当小数部分为空时,不显示小数点
if (s[1] === '') {
return s.join('')
}
return s.join(dec)
}
页面显示的是处理过的数据,但导出的列表数据格式是没有处理过的
|