首页 > 解决方案 > 在 Angular 5 中将 XLSX 列数据类型更改为数字

问题描述

  1. 我正在使用xlsx库导出到 excel(“xlsx”:“0.16.1”
  2. 我有三列带有千位分隔符,所以当我导出该数据时,它将被视为一个字符串,但我想要数字类型,这是导出到 Excel 文件的代码

    public downloadExcel(json: any[], excelFileName: string, merges?: any): void {
        let worksheet: XLSX.WorkSheet;
        if (merges) {
            worksheet = XLSX.utils.aoa_to_sheet(json);
            worksheet['!merges'] = merges;
        } else {
            worksheet = XLSX.utils.json_to_sheet(json);
        }
    
        const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
    
        var fmt = '0'; 
        workbook.Sheets['data']['C2'].z = fmt;
    
        const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
        this.saveAsExcelFile(excelBuffer, excelFileName);
    }
    
    private saveAsExcelFile(buffer: any, fileName: string): void {
        const data: Blob = new Blob([buffer], {
            type: 'application/octet-stream'
        });
        FileSaver.saveAs(data, fileName + "_" + new Date().toLocaleDateString() + "_" + new Date().toLocaleTimeString() + EXCEL_EXTENSION);
    }
    

    在此处输入图像描述

所以我想改变C,D,E,F列的数据类型,所以我可以直接对那一列求和,

标签: excelangular5xlsx

解决方案


在从 JSON 生成 Excel 之前,通过从数字中删除 Comma(,) 来修改 JSON,并将它们转换为如下数字:

parseInt('10,340'.replace(/,/g, ''))

这样,您将存储不带逗号的数字,因此 Excel 会自动将该列视为数字。

如果您有任何问题,请告诉我。

- - - - - - 编辑 - - - - - -

您可以如上所示替换原始数字中的逗号 (,) 并使用列格式#,##0.00。这样,它会在每千个点显示逗号,但实际上它将它存储为一个数字,以便您可以进行所有算术运算


推荐阅读