【问题标题】:How to append (%) percentage sign without multiplying in XLSX JS如何在不乘以 XLSX JS 的情况下附加(%)百分号
【发布时间】:2021-05-19 14:58:43
【问题描述】:

在 XLSX 中,无法附加带有 % 符号的单元格值。在尝试时,它将单元格值乘以 100。

输入:["Ball", 1000, 201.72]。

XLSX 中的预期输出:["Ball", 1000, 201.72%]

当前输出:["Ball", 1000, 20172.00%]

function test(){
  var itemArr = [
    ["Ball", 1000, 201.72],
    ["Bell", 800, 0.7],
    ["Bun", 1500, 1.7612]
  ];
  var arrayOfArray = [];

  for (var i = 0; i < itemArr.length; i++) {
    var row = [];
    for (var j = 0; j < itemArr[i].length; j++) {
      var obj = {};
      obj.v = itemArr[i][j];
      if (j > 0) obj.t = "n";
      else obj.t = "s";
      if (j == 2) obj.z = "#,##0.00%";
      else if (j == 1) obj.z = "#,##0.00";
      row.push(obj);
    }
    arrayOfArray.push(row);
  }
  var ws = XLSX.utils.aoa_to_sheet(arrayOfArray);
  var wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
  return XLSX.writeFile(wb, "test.xlsx");
}

这是示例代码笔:https://codepen.io/satishvarada/pen/yLMajKe

【问题讨论】:

    标签: javascript sheetjs


    【解决方案1】:

    这使用类似于 Excel 的数字格式化程序,因此每当您使用百分号时,它都会自动乘以 100。

    通过 SheetJS 文档

    规则与 Excel 显示自定义数字格式的方式略有不同。特别是,文字字符必须用双引号括起来或在前面加上反斜杠。有关详细信息,请参阅 Excel 文档文章创建或删除自定义数字格式或 ECMA-376 18.8.31(数字格式)

    您可以通过在其周围添加引号来添加百分比文字

    if (j == 2) obj.z = '#,#0.00"%"';
    

    Codepen:https://codepen.io/JonathanSouthern/pen/PopbbZr

    【讨论】:

      【解决方案2】:

      从格式中删除“%”,然后将其附加到值中。以下是相关更改:

      if (j == 2) {
         obj.z = "#,##0.00";
         obj.v += '%';
      }
      

      更新代码:

      document.getElementById("test").addEventListener("click", function () {
        var itemArr = [
          ["Ball", 1000, 201.72],
          ["Bell", 800, 0.7],
          ["Bun", 1500, 1.7612]
        ];
        var arrayOfArray = [];
      
        for (var i = 0; i < itemArr.length; i++) {
          var row = [];
          for (var j = 0; j < itemArr[i].length; j++) {
            var obj = {};
            obj.v = itemArr[i][j];
            if (j > 0) obj.t = "n";
            else obj.t = "s";
            if (j == 2) {
              obj.z = "#,##0.00"; // No percent sign here
              obj.v += '%'; // Append it afterwards
            }
            else if (j == 1) obj.z = "#,##0.00";
            row.push(obj);
          }
          arrayOfArray.push(row);
        }
        var ws = XLSX.utils.aoa_to_sheet(arrayOfArray);
        var wb = XLSX.utils.book_new();
        XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
        return XLSX.writeFile(wb, "test.xlsx");
      });
      

      https://codepen.io/km0ser/pen/dyvOOPj

      【讨论】:

        猜你喜欢
        • 2011-08-24
        • 2010-11-19
        • 1970-01-01
        • 2020-08-04
        • 1970-01-01
        • 1970-01-01
        • 2021-05-12
        • 2022-10-07
        • 1970-01-01
        相关资源
        最近更新 更多