@leankylin-sheet/excel 5.2.68 → 5.2.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
1
  import ExcelJS from "exceljs";
2
+ declare const convertFormula: (formula: string) => string;
2
3
  declare const setStyleAndValue: (table: any, worksheet: ExcelJS.Worksheet, variables?: any) => void;
3
- export { setStyleAndValue };
4
+ export { setStyleAndValue, convertFormula };
package/dist/index.esm.js CHANGED
@@ -5093,6 +5093,16 @@ var replaceVariablesInFormula = function replaceVariablesInFormula(formula, vari
5093
5093
  return String(value);
5094
5094
  });
5095
5095
  };
5096
+ var XLFN_FUNCTIONS = ["IFNA"];
5097
+ var convertFormula = function convertFormula(formula) {
5098
+ if (!formula) return formula;
5099
+ var reg = new RegExp("(?<![\\w.])(?:".concat(XLFN_FUNCTIONS.join("|"), ")\\b"), "gi");
5100
+ return formula.split(/("(?:[^"]|"")*")/).map(function (segment, index) {
5101
+ return index % 2 === 1 ? segment : segment.replace(reg, function (match) {
5102
+ return "_xlfn.".concat(match.toUpperCase());
5103
+ });
5104
+ }).join("");
5105
+ };
5096
5106
  var setStyleAndValue = function setStyleAndValue(table, worksheet, variables) {
5097
5107
  var cellArr = table === null || table === void 0 ? void 0 : table.data;
5098
5108
  if (!Array.isArray(cellArr)) return;
@@ -5187,7 +5197,7 @@ var setStyleAndValue = function setStyleAndValue(table, worksheet, variables) {
5187
5197
  if (cell.f && _typeof(v) !== "object") {
5188
5198
  var formulaStr = cell.f.startsWith("=") ? cell.f.slice(1) : cell.f;
5189
5199
  value = {
5190
- formula: replaceVariablesInFormula(formulaStr, variables, table.id),
5200
+ formula: convertFormula(replaceVariablesInFormula(formulaStr, variables, table.id)),
5191
5201
  result: v
5192
5202
  };
5193
5203
  } else {
package/dist/index.js CHANGED
@@ -5105,6 +5105,16 @@ var replaceVariablesInFormula = function replaceVariablesInFormula(formula, vari
5105
5105
  return String(value);
5106
5106
  });
5107
5107
  };
5108
+ var XLFN_FUNCTIONS = ["IFNA"];
5109
+ var convertFormula = function convertFormula(formula) {
5110
+ if (!formula) return formula;
5111
+ var reg = new RegExp("(?<![\\w.])(?:".concat(XLFN_FUNCTIONS.join("|"), ")\\b"), "gi");
5112
+ return formula.split(/("(?:[^"]|"")*")/).map(function (segment, index) {
5113
+ return index % 2 === 1 ? segment : segment.replace(reg, function (match) {
5114
+ return "_xlfn.".concat(match.toUpperCase());
5115
+ });
5116
+ }).join("");
5117
+ };
5108
5118
  var setStyleAndValue = function setStyleAndValue(table, worksheet, variables) {
5109
5119
  var cellArr = table === null || table === void 0 ? void 0 : table.data;
5110
5120
  if (!Array.isArray(cellArr)) return;
@@ -5199,7 +5209,7 @@ var setStyleAndValue = function setStyleAndValue(table, worksheet, variables) {
5199
5209
  if (cell.f && _typeof(v) !== "object") {
5200
5210
  var formulaStr = cell.f.startsWith("=") ? cell.f.slice(1) : cell.f;
5201
5211
  value = {
5202
- formula: replaceVariablesInFormula(formulaStr, variables, table.id),
5212
+ formula: convertFormula(replaceVariablesInFormula(formulaStr, variables, table.id)),
5203
5213
  result: v
5204
5214
  };
5205
5215
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leankylin-sheet/excel",
3
- "version": "5.2.68",
3
+ "version": "5.2.69",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "module": "dist/index.esm.js",