格式化功能还不完善,目前只支持金额、日期(部分)格式化部分功能。目前不支持多语言。
可以直接使用系统预设的格式化对象来对单元格进行格式化,访问路径位 websheet.Model.NumFmts.* 。 系统预设见3.2节内容。下面代码直接使用系统预设的‘#,##0’对金额进行格式化。
//系统预设--格式化成正数
let numFmt3 = websheet.Model.NumFmts.numFmt3;
activeSheet.SetCellNumFmt('C1',numFmt3);
activeSheet.SetCellNumFmt(2,3,numFmt3);
如果你有自己定义格式化需求,则可以通过声明自己的格式化对象来进行格式化。下面代码格式化代码,对数字千位分隔,小数展示位4位,负数红色括号内展示。
注意自定义格式化对象的id不能与系统内id冲突,也不能和模版内定义的id冲突。
//自定义 - 格式化成4位小数 不要与系统预设的冲突,否则会引起其他单元格格式化问题
let numFmt200 = new websheet.Model.NumFmt();
numFmt200.numFmtId=200;
numFmt200.formatCode='#,##0.0000_);[Red]\(#,##0.0000\)';
activeSheet.SetCellNumFmt('C5',numFmt200);
activeSheet.SetCellNumFmt(6,3,numFmt200);
与金额类似可以直接使用系统预设的格式化对象来对单元格进行格式化。 系统预设见3.2节内容。下面代码直接使用系统预设的‘0%’对金额进行百分百格式化。
//系统预设--百分比
let numFmt9 = websheet.Model.NumFmts.numFmt9;
activeSheet.SetCellNumFmt('C7',numFmt9);
与金额类似,如果你有自己定义格式化需求,则可以通过声明自己的格式化对象来进行格式化。下面代码格式化代码,百分百3位小数展示。
注意自定义格式化对象的id不能与系统内id冲突,也不能和模版内定义的id冲突。
//自定义百分百格式化
let numFmt201 = new websheet.Model.NumFmt();
numFmt201.numFmtId=201;
numFmt201.formatCode='0.000%';
activeSheet.SetCellNumFmt(9,3,numFmt201);
完整的金额和百分比代码如下:
let wsheet = new websheet('myofdID', yourElement);
/**
* 第一步 获取激活的activeSheet
*/
let activeSheet = wsheet.ActiveSheet();
let r=1;
let anumber=123123123.1234
//金额格式化
activeSheet.SetCellValue(r++,3,anumber);
activeSheet.SetCellValue(r++,3,-anumber);
activeSheet.SetCellValue(r++,3,anumber);
activeSheet.SetCellValue(r++,3,-anumber);
activeSheet.SetCellValue(r++,3,anumber);
activeSheet.SetCellValue(r++,3,-anumber);
//百分百格式化
activeSheet.SetCellValue(r++,3,1.111);
activeSheet.SetCellValue(r++,3,1.111);
activeSheet.SetCellValue(r++,3,1.111);
/**
* 第二步 金额格式化
*/
//系统预设--格式化成正数
let numFmt3 = websheet.Model.NumFmts.numFmt3;
activeSheet.SetCellNumFmt('C1',numFmt3);
activeSheet.SetCellNumFmt('C2',numFmt3);
//系统预设--格式化成2位小数
let numFmt40 = websheet.Model.NumFmts.numFmt40;
activeSheet.SetCellNumFmt('C3',numFmt40);
activeSheet.SetCellNumFmt('C4',numFmt40);
//自定义 - 格式化成4位小数 不要与系统预设的冲突,否则会引起其他单元格格式化问题
let numFmt200 = new websheet.Model.NumFmt();
numFmt200.numFmtId=200;
numFmt200.formatCode='#,##0.0000_);[Red]\(#,##0.0000\)';
activeSheet.SetCellNumFmt('C5',numFmt200);
activeSheet.SetCellNumFmt('C6',numFmt200);
//系统预设--百分比
let numFmt9 = websheet.Model.NumFmts.numFmt9;
activeSheet.SetCellNumFmt('C7',numFmt9);
//系统预设--百分比
let numFmt10 = websheet.Model.NumFmts.numFmt10;
activeSheet.SetCellNumFmt('C8',numFmt10);
//自定义百分百格式化
let numFmt201 = new websheet.Model.NumFmt();
numFmt201.numFmtId=201;
numFmt201.formatCode='0.000%';
activeSheet.SetCellNumFmt(9,3,numFmt201);
/**
* 第三步 重新绘制表格
*/
activeSheet.setColWidth(3,160);
wsheet.BuildSheet();
wsheet.Draw();
结果如下:
NOW函数是EXCEL中获取当前日期和时间的函数,对日期和时间格式化我将使用该函数。使用该函数的方法也很简单只要在单元格内增加“=NOW()”即可,下面的例子中我们将A列的3行都设置成了NOW函数。
activeSheet.SetCellValue(r++,1,'=NOW()');
activeSheet.SetCellValue(r++,1,'=NOW()');
activeSheet.SetCellValue(r++,1,'=NOW()');
使用“yyyy/M/d”方式格式化:
//yyyy/M/d 格式
let numFmt14 = websheet.Model.NumFmts.numFmt14;
activeSheet.SetCellNumFmt('A1',numFmt14);
使用“yyyy年m月d日”方式格式化:
//yyyy年m月d日 格式
let numFmt31 = websheet.Model.NumFmts.numFmt31;
activeSheet.SetCellNumFmt('A2',numFmt31);
yyyy张m三d李”自定义方式格式化:
//自定义 - //yyyyAmBdC 格式
let numFmt200 = new websheet.Model.NumFmt();
numFmt200.numFmtId=200;
numFmt200.formatCode='yyyy张m三d李 ';
activeSheet.SetCellNumFmt('A3',numFmt200);
下文例子中,分别通过“h时mm分ss秒”,“上午/下午 h时mm分ss秒”,“h:mm:ss AM/PM”三种格式对时间进行了格式化。
//h时mm分ss秒
let numFmt33 = websheet.Model.NumFmts.numFmt33;
activeSheet.SetCellNumFmt('A4',numFmt33);
//上午/下午 h时mm分ss秒
let numFmt35 = websheet.Model.NumFmts.numFmt35;
activeSheet.SetCellNumFmt('A5',numFmt35);
//h:mm:ss AM/PM
let numFmt19 = websheet.Model.NumFmts.numFmt19;
activeSheet.SetCellNumFmt('A6',numFmt19);
let wsheet = new websheet('myofdID', yourElement);
/**
* 第一步 获取激活的activeSheet
*/
let activeSheet = wsheet.ActiveSheet();
let r=1;
//日期格式化
activeSheet.SetCellValue(r++,1,'=NOW()');
activeSheet.SetCellValue(r++,1,'=NOW()');
activeSheet.SetCellValue(r++,1,'=NOW()');
//时间格式化
activeSheet.SetCellValue(r++,1,'=NOW()');
activeSheet.SetCellValue(r++,1,'=NOW()');
activeSheet.SetCellValue(r++,1,'=NOW()');
/**
* 第二步 日期格式化
*/
//yyyy/M/d 格式
let numFmt14 = websheet.Model.NumFmts.numFmt14;
activeSheet.SetCellNumFmt('A1',numFmt14);
//yyyy年m月d日 格式
let numFmt31 = websheet.Model.NumFmts.numFmt31;
activeSheet.SetCellNumFmt('A2',numFmt31);
//自定义 - //yyyyAmBdC 格式
let numFmt200 = new websheet.Model.NumFmt();
numFmt200.numFmtId=200;
numFmt200.formatCode='yyyy张m三d李 ';
activeSheet.SetCellNumFmt('A3',numFmt200);
/**
* 第二步 时间格式化
*/
//h时mm分ss秒
let numFmt33 = websheet.Model.NumFmts.numFmt33;
activeSheet.SetCellNumFmt('A4',numFmt33);
//上午/下午 h时mm分ss秒
let numFmt35 = websheet.Model.NumFmts.numFmt35;
activeSheet.SetCellNumFmt('A5',numFmt35);
//h:mm:ss AM/PM
let numFmt19 = websheet.Model.NumFmts.numFmt19;
activeSheet.SetCellNumFmt('A6',numFmt19);
/**
* 第三步 重新绘制表格
*/
activeSheet.setColWidth(1,160);
activeSheet.WorkFormula(); //重建公式
activeSheet.cacl();//公式计算
wsheet.BuildSheet();
wsheet.Draw();
结果如下:
常用格式化id如下。
numFmtId | formatCode | 说明 |
---|---|---|
1 | 0 | |
2 | 0.00 | |
3 | #,##0 | |
4 | #,##0.00 | |
9 | 0% | |
10 | 0.00% | |
11 | 0.00E+00 | |
14 | yyyy/mm/dd | |
15 | d-mmm-yy | |
16 | d-mmm | |
17 | mmm-yy | |
18 | h:mm AM/PM | |
19 | h:mm:ss AM/PM | |
20 | h:mm | |
21 | h:mm:ss | |
22 | m/d/yy h:mm | |
37 | h:mm:ss | |
38 | #,##0 ;[Red](#,##0) | |
39 | #,##0.00;(#,##0.00) | |
40 | #,##0.00;[Red](#,##0.00) | |
45 | mm:ss | |
48 | ##0.0E+0 | |
27 | yyyy年m月 | |
28 | m月d日 | |
29 | m月d日 | |
30 | m-d-yy | |
31 | yyyy年m月d日 | |
32 | h时mm分 | |
33 | h时mm分ss秒 | |
34 | 上午/下午 h时mm分 | |
35 | 上午/下午 h时mm分ss秒 |