websheet 之 格式化

格式化功能还不完善,目前只支持金额、日期(部分)格式化部分功能。目前不支持多语言。

一、金额格式化

1.1 金额

        可以直接使用系统预设的格式化对象来对单元格进行格式化,访问路径位 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);

1.2 百分百

        与金额类似可以直接使用系统预设的格式化对象来对单元格进行格式化。 系统预设见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);

1.3 完整代码示例

在线代码

        完整的金额和百分比代码如下:

  
    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();


        结果如下:

二、 日期时间格式化

2.1 NOW函数

        NOW函数是EXCEL中获取当前日期和时间的函数,对日期和时间格式化我将使用该函数。使用该函数的方法也很简单只要在单元格内增加“=NOW()”即可,下面的例子中我们将A列的3行都设置成了NOW函数。

    activeSheet.SetCellValue(r++,1,'=NOW()');
    activeSheet.SetCellValue(r++,1,'=NOW()');
    activeSheet.SetCellValue(r++,1,'=NOW()'); 

2.2 日期格式化

        使用“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); 

2.3 时间格式化

        下文例子中,分别通过“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);

2.4 完整代码示例

在线代码

  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();

        结果如下:

三、NumFmt对象及常用式化

        常用格式化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秒
posted @ 2025-04-29 11:04  火柴盒zhang  阅读(33)  评论(0)    收藏  举报