你的意思是对于一个数字,需要两种自定义格式
1:万元(同时支持设置千分位,小数位)
2:元(同时支持设置千分位,小数位)
第二种的话,实际上就设置普通格式即可。比如设置格式字符串为“#,##0.00元”就是带千分位,精确到分的格式
第一种的话,你需要自定义格式,但是也可以传入一个格式字符串,来对千分位,小数位这部分做格式化,自己仅处理把一个浮点数除10000即可,这样在保留小数位和其他的自定义格式方面是自由的。
自定义万元格式
- function CustomNumberFormat(formatstr) {
- this.formatstr=formatstr;
- }
- CustomNumberFormat.prototype = new GC.Spread.Formatter.FormatterBase();
- CustomNumberFormat.prototype.format = function (obj, formattedData) {
- if (typeof obj === "number") {
- return formatNumber(obj, formattedData,this.formatstr);
- } else if (typeof obj === "string") {
-
- if (Number.isFinite(+obj)) {
- return formatNumber(parseFloat(obj), formattedData,this.formatstr);
- }
- }
- return obj ? obj.toString() : "";
- };
- function formatNumber(value, formattedData,formatstr) {
- var generalformatter=new GC.Spread.Formatter.GeneralFormatter();
- generalformatter.formatString(formatstr);
- //在这里处理.给值除以10000,然后仍然应用传入的格式字符串做格式化
- console.log(value/10000);
- return generalformatter.format(value/10000, formattedData);
- }
- CustomNumberFormat.prototype.parse = function (str) {
- var generalformatter=new GC.Spread.Formatter.GeneralFormatter();
- generalformatter.formatString(this.formatstr);
- console.log(generalformatter.parse(str))
- return generalformatter.parse(str);
- };
复制代码
给一个单元格应用万元格式
- sheet.getRange(0, 0, 6, 2).formatter(new CustomNumberFormat("#,##0.0000万"));
复制代码
效果
|