exceljs-lts 4.5.0 → 4.5.1

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.
package/README.md CHANGED
@@ -1283,6 +1283,15 @@ The following table defines the properties supported by tables.
1283
1283
  | columns | Column definitions | Y | |
1284
1284
  | rows | Rows of data | Y | |
1285
1285
 
1286
+ The table name must follow Excel's rules, otherwise `addTable` (and `table.commit()`) throws an
1287
+ error instead of writing a file that Excel has to repair:
1288
+
1289
+ * it starts with a letter, an underscore (`_`) or a backslash (`\`);
1290
+ * the remaining characters are letters, digits, periods (`.`) or underscores (no spaces or other
1291
+ special characters);
1292
+ * it does not look like a cell reference, e.g. `A1`, `R1C1`, `R` or `C`;
1293
+ * it is at most 255 characters long.
1294
+
1286
1295
  ### Table Style Properties[⬆](#contents)<!-- Link generated with jump2header -->
1287
1296
 
1288
1297
  The following table defines the properties supported within the table
package/README_zh.md CHANGED
@@ -1244,6 +1244,13 @@ ws.addTable({
1244
1244
  | columns | 列定义 | Y | |
1245
1245
  | rows | 数据行 | Y | |
1246
1246
 
1247
+ 表格名称必须符合 Excel 的规则,否则 `addTable`(以及 `table.commit()`)会抛出错误,而不是写出需要 Excel 修复的文件:
1248
+
1249
+ * 以字母、下划线(`_`)或反斜杠(`\`)开头;
1250
+ * 其余字符只能是字母、数字、句点(`.`)或下划线(不能包含空格或其他特殊字符);
1251
+ * 不能看起来像单元格引用,例如 `A1`、`R1C1`、`R` 或 `C`;
1252
+ * 长度不超过 255 个字符。
1253
+
1247
1254
  ### 表格样式属性[⬆](#目录)<!-- Link generated with jump2header -->
1248
1255
 
1249
1256
  下表定义了表格中支持的属性样式属性。
@@ -2,6 +2,29 @@
2
2
 
3
3
  /* eslint-disable max-classes-per-file */
4
4
  const colCache = require('../utils/col-cache');
5
+
6
+ // Excel's rules for table names: start with a letter, '_' or '\\', then letters, digits, '.' or
7
+ // '_'; at most 255 characters; and the name must not be read as a cell reference.
8
+ // Any non-ASCII character is treated as a letter so that names Excel accepts keep working.
9
+ const tableNameRegex = /^[A-Za-z_\\\u0080-\uFFFF][A-Za-z0-9._\u0080-\uFFFF]*$/;
10
+ function isCellReference(name) {
11
+ if (/^[RC]$/i.test(name) || /^R\d*C\d*$/i.test(name)) {
12
+ // 'R', 'C' and R1C1-style references such as 'R1C1' or 'RC'
13
+ return true;
14
+ }
15
+ const match = /^([A-Z]{1,3})(\d+)$/i.exec(name);
16
+ if (!match) {
17
+ return false;
18
+ }
19
+ // letters past XFD are not a column, so a name like 'ZZZ1' is fine
20
+ const letters = match[1].toUpperCase();
21
+ const isColumn = letters.length < 3 || letters <= 'XFD';
22
+ const row = parseInt(match[2], 10);
23
+ return isColumn && row >= 1 && row <= 1048576;
24
+ }
25
+ function isValidTableName(name) {
26
+ return typeof name === 'string' && name.length <= 255 && tableNameRegex.test(name) && !isCellReference(name);
27
+ }
5
28
  class Column {
6
29
  // wrapper around column model, allowing access and manipulation
7
30
  constructor(table, column, index) {
@@ -135,6 +158,8 @@ class Table {
135
158
  throw new Error(message);
136
159
  }
137
160
  };
161
+ assert(table.name, 'Table must have a name');
162
+ assert(isValidTableName(table.name), `Invalid table name '${table.name}'. A table name must start with a letter, underscore ` + 'or backslash, contain only letters, digits, periods and underscores, ' + 'not look like a cell reference and be at most 255 characters long.');
138
163
  assert(table.ref, 'Table must have ref');
139
164
  assert(table.columns, 'Table must have column definitions');
140
165
  assert(table.rows, 'Table must have row definitions');
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","names":["colCache","require","Column","constructor","table","column","index","_set","name","value","cacheState","filterButton","style","totalsRowLabel","totalsRowFunction","totalsRowResult","totalsRowFormula","Table","worksheet","validate","store","getFormula","Error","width","columns","length","height","rows","filterHeight","headerRow","tableHeight","totalsRow","assign","o","dflt","undefined","assert","test","message","ref","tl","decodeAddress","row","col","autoFilterRef","encode","tableRef","forEach","i","assignStyle","cell","Object","keys","key","count","r","getRow","j","getCell","data","formula","result","load","model","_cache","commit","addRow","values","rowNumber","push","splice","removeRows","rowIndex","getColumn","colIndex","addColumn","removeColumns","_assign","target","prop","displayName","displyName","displayNamename","theme","showFirstColumn","showLastColumn","showRowStripes","showColumnStripes","module","exports"],"sources":["../../../lib/doc/table.js"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nconst colCache = require('../utils/col-cache');\n\nclass Column {\n // wrapper around column model, allowing access and manipulation\n constructor(table, column, index) {\n this.table = table;\n this.column = column;\n this.index = index;\n }\n\n _set(name, value) {\n this.table.cacheState();\n this.column[name] = value;\n }\n\n /* eslint-disable lines-between-class-members */\n get name() {\n return this.column.name;\n }\n set name(value) {\n this._set('name', value);\n }\n\n get filterButton() {\n return this.column.filterButton;\n }\n set filterButton(value) {\n this.column.filterButton = value;\n }\n\n get style() {\n return this.column.style;\n }\n set style(value) {\n this.column.style = value;\n }\n\n get totalsRowLabel() {\n return this.column.totalsRowLabel;\n }\n set totalsRowLabel(value) {\n this._set('totalsRowLabel', value);\n }\n\n get totalsRowFunction() {\n return this.column.totalsRowFunction;\n }\n set totalsRowFunction(value) {\n this._set('totalsRowFunction', value);\n }\n\n get totalsRowResult() {\n return this.column.totalsRowResult;\n }\n set totalsRowResult(value) {\n this._set('totalsRowResult', value);\n }\n\n get totalsRowFormula() {\n return this.column.totalsRowFormula;\n }\n set totalsRowFormula(value) {\n this._set('totalsRowFormula', value);\n }\n /* eslint-enable lines-between-class-members */\n}\n\nclass Table {\n constructor(worksheet, table) {\n this.worksheet = worksheet;\n if (table) {\n this.table = table;\n // check things are ok first\n this.validate();\n\n this.store();\n }\n }\n\n getFormula(column) {\n // get the correct formula to apply to the totals row\n switch (column.totalsRowFunction) {\n case 'none':\n return null;\n case 'average':\n return `SUBTOTAL(101,${this.table.name}[${column.name}])`;\n case 'countNums':\n return `SUBTOTAL(102,${this.table.name}[${column.name}])`;\n case 'count':\n return `SUBTOTAL(103,${this.table.name}[${column.name}])`;\n case 'max':\n return `SUBTOTAL(104,${this.table.name}[${column.name}])`;\n case 'min':\n return `SUBTOTAL(105,${this.table.name}[${column.name}])`;\n case 'stdDev':\n return `SUBTOTAL(106,${this.table.name}[${column.name}])`;\n case 'var':\n return `SUBTOTAL(107,${this.table.name}[${column.name}])`;\n case 'sum':\n return `SUBTOTAL(109,${this.table.name}[${column.name}])`;\n case 'custom':\n return column.totalsRowFormula;\n default:\n throw new Error(`Invalid Totals Row Function: ${column.totalsRowFunction}`);\n }\n }\n\n get width() {\n // width of the table\n return this.table.columns.length;\n }\n\n get height() {\n // height of the table data\n return this.table.rows.length;\n }\n\n get filterHeight() {\n // height of the table data plus optional header row\n return this.height + (this.table.headerRow ? 1 : 0);\n }\n\n get tableHeight() {\n // full height of the table on the sheet\n return this.filterHeight + (this.table.totalsRow ? 1 : 0);\n }\n\n validate() {\n const {table} = this;\n // set defaults and check is valid\n const assign = (o, name, dflt) => {\n if (o[name] === undefined) {\n o[name] = dflt;\n }\n };\n assign(table, 'headerRow', true);\n assign(table, 'totalsRow', false);\n\n assign(table, 'style', {});\n assign(table.style, 'theme', 'TableStyleMedium2');\n assign(table.style, 'showFirstColumn', false);\n assign(table.style, 'showLastColumn', false);\n assign(table.style, 'showRowStripes', false);\n assign(table.style, 'showColumnStripes', false);\n\n const assert = (test, message) => {\n if (!test) {\n throw new Error(message);\n }\n };\n assert(table.ref, 'Table must have ref');\n assert(table.columns, 'Table must have column definitions');\n assert(table.rows, 'Table must have row definitions');\n\n table.tl = colCache.decodeAddress(table.ref);\n const {row, col} = table.tl;\n assert(row > 0, 'Table must be on valid row');\n assert(col > 0, 'Table must be on valid col');\n\n const {width, filterHeight, tableHeight} = this;\n\n // autoFilterRef is a range that includes optional headers only\n table.autoFilterRef = colCache.encode(row, col, row + filterHeight - 1, col + width - 1);\n\n // tableRef is a range that includes optional headers and totals\n table.tableRef = colCache.encode(row, col, row + tableHeight - 1, col + width - 1);\n\n table.columns.forEach((column, i) => {\n assert(column.name, `Column ${i} must have a name`);\n if (i === 0) {\n assign(column, 'totalsRowLabel', 'Total');\n } else {\n assign(column, 'totalsRowFunction', 'none');\n column.totalsRowFormula = this.getFormula(column);\n }\n });\n }\n\n store() {\n // where the table needs to store table data, headers, footers in\n // the sheet...\n const assignStyle = (cell, style) => {\n if (style) {\n Object.keys(style).forEach(key => {\n cell.style[key] = style[key];\n });\n }\n };\n\n const {worksheet, table} = this;\n const {row, col} = table.tl;\n let count = 0;\n if (table.headerRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const {style, name} = column;\n const cell = r.getCell(col + j);\n cell.value = name;\n assignStyle(cell, style);\n });\n }\n table.rows.forEach(data => {\n const r = worksheet.getRow(row + count++);\n data.forEach((value, j) => {\n const cell = r.getCell(col + j);\n cell.value = value;\n\n assignStyle(cell, table.columns[j].style);\n });\n });\n\n if (table.totalsRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const cell = r.getCell(col + j);\n if (j === 0) {\n cell.value = column.totalsRowLabel;\n } else {\n const formula = this.getFormula(column);\n if (formula) {\n cell.value = {\n formula: column.totalsRowFormula,\n result: column.totalsRowResult,\n };\n } else {\n cell.value = null;\n }\n }\n\n assignStyle(cell, column.style);\n });\n }\n }\n\n load(worksheet) {\n // where the table will read necessary features from a loaded sheet\n const {table} = this;\n const {row, col} = table.tl;\n let count = 0;\n if (table.headerRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const cell = r.getCell(col + j);\n cell.value = column.name;\n });\n }\n table.rows.forEach(data => {\n const r = worksheet.getRow(row + count++);\n data.forEach((value, j) => {\n const cell = r.getCell(col + j);\n cell.value = value;\n });\n });\n\n if (table.totalsRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const cell = r.getCell(col + j);\n if (j === 0) {\n cell.value = column.totalsRowLabel;\n } else {\n const formula = this.getFormula(column);\n if (formula) {\n cell.value = {\n formula: column.totalsRowFormula,\n result: column.totalsRowResult,\n };\n }\n }\n });\n }\n }\n\n get model() {\n return this.table;\n }\n\n set model(value) {\n this.table = value;\n }\n\n // ================================================================\n // TODO: Mutating methods\n cacheState() {\n if (!this._cache) {\n this._cache = {\n ref: this.ref,\n width: this.width,\n tableHeight: this.tableHeight,\n };\n }\n }\n\n commit() {\n // changes may have been made that might have on-sheet effects\n if (!this._cache) {\n return;\n }\n\n // check things are ok first\n this.validate();\n\n const ref = colCache.decodeAddress(this._cache.ref);\n if (this.ref !== this._cache.ref) {\n // wipe out whole table footprint at previous location\n for (let i = 0; i < this._cache.tableHeight; i++) {\n const row = this.worksheet.getRow(ref.row + i);\n for (let j = 0; j < this._cache.width; j++) {\n const cell = row.getCell(ref.col + j);\n cell.value = null;\n }\n }\n } else {\n // clear out below table if it has shrunk\n for (let i = this.tableHeight; i < this._cache.tableHeight; i++) {\n const row = this.worksheet.getRow(ref.row + i);\n for (let j = 0; j < this._cache.width; j++) {\n const cell = row.getCell(ref.col + j);\n cell.value = null;\n }\n }\n\n // clear out to right of table if it has lost columns\n for (let i = 0; i < this.tableHeight; i++) {\n const row = this.worksheet.getRow(ref.row + i);\n for (let j = this.width; j < this._cache.width; j++) {\n const cell = row.getCell(ref.col + j);\n cell.value = null;\n }\n }\n }\n\n this.store();\n }\n\n addRow(values, rowNumber) {\n // Add a row of data, either insert at rowNumber or append\n this.cacheState();\n\n if (rowNumber === undefined) {\n this.table.rows.push(values);\n } else {\n this.table.rows.splice(rowNumber, 0, values);\n }\n }\n\n removeRows(rowIndex, count = 1) {\n // Remove a rows of data\n this.cacheState();\n this.table.rows.splice(rowIndex, count);\n }\n\n getColumn(colIndex) {\n const column = this.table.columns[colIndex];\n return new Column(this, column, colIndex);\n }\n\n addColumn(column, values, colIndex) {\n // Add a new column, including column defn and values\n // Inserts at colNumber or adds to the right\n this.cacheState();\n\n if (colIndex === undefined) {\n this.table.columns.push(column);\n this.table.rows.forEach((row, i) => {\n row.push(values[i]);\n });\n } else {\n this.table.columns.splice(colIndex, 0, column);\n this.table.rows.forEach((row, i) => {\n row.splice(colIndex, 0, values[i]);\n });\n }\n }\n\n removeColumns(colIndex, count = 1) {\n // Remove a column with data\n this.cacheState();\n\n this.table.columns.splice(colIndex, count);\n this.table.rows.forEach(row => {\n row.splice(colIndex, count);\n });\n }\n\n _assign(target, prop, value) {\n this.cacheState();\n target[prop] = value;\n }\n\n /* eslint-disable lines-between-class-members */\n get ref() {\n return this.table.ref;\n }\n set ref(value) {\n this._assign(this.table, 'ref', value);\n }\n\n get name() {\n return this.table.name;\n }\n set name(value) {\n this.table.name = value;\n }\n\n get displayName() {\n return this.table.displyName || this.table.name;\n }\n set displayNamename(value) {\n this.table.displayName = value;\n }\n\n get headerRow() {\n return this.table.headerRow;\n }\n set headerRow(value) {\n this._assign(this.table, 'headerRow', value);\n }\n\n get totalsRow() {\n return this.table.totalsRow;\n }\n set totalsRow(value) {\n this._assign(this.table, 'totalsRow', value);\n }\n\n get theme() {\n return this.table.style.name;\n }\n set theme(value) {\n this.table.style.name = value;\n }\n\n get showFirstColumn() {\n return this.table.style.showFirstColumn;\n }\n set showFirstColumn(value) {\n this.table.style.showFirstColumn = value;\n }\n\n get showLastColumn() {\n return this.table.style.showLastColumn;\n }\n set showLastColumn(value) {\n this.table.style.showLastColumn = value;\n }\n\n get showRowStripes() {\n return this.table.style.showRowStripes;\n }\n set showRowStripes(value) {\n this.table.style.showRowStripes = value;\n }\n\n get showColumnStripes() {\n return this.table.style.showColumnStripes;\n }\n set showColumnStripes(value) {\n this.table.style.showColumnStripes = value;\n }\n /* eslint-enable lines-between-class-members */\n}\n\nmodule.exports = Table;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"table.js","names":["colCache","require","tableNameRegex","isCellReference","name","test","match","exec","letters","toUpperCase","isColumn","length","row","parseInt","isValidTableName","Column","constructor","table","column","index","_set","value","cacheState","filterButton","style","totalsRowLabel","totalsRowFunction","totalsRowResult","totalsRowFormula","Table","worksheet","validate","store","getFormula","Error","width","columns","height","rows","filterHeight","headerRow","tableHeight","totalsRow","assign","o","dflt","undefined","assert","message","ref","tl","decodeAddress","col","autoFilterRef","encode","tableRef","forEach","i","assignStyle","cell","Object","keys","key","count","r","getRow","j","getCell","data","formula","result","load","model","_cache","commit","addRow","values","rowNumber","push","splice","removeRows","rowIndex","getColumn","colIndex","addColumn","removeColumns","_assign","target","prop","displayName","displyName","displayNamename","theme","showFirstColumn","showLastColumn","showRowStripes","showColumnStripes","module","exports"],"sources":["../../../lib/doc/table.js"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nconst colCache = require('../utils/col-cache');\n\n// Excel's rules for table names: start with a letter, '_' or '\\\\', then letters, digits, '.' or\n// '_'; at most 255 characters; and the name must not be read as a cell reference.\n// Any non-ASCII character is treated as a letter so that names Excel accepts keep working.\nconst tableNameRegex = /^[A-Za-z_\\\\\\u0080-\\uFFFF][A-Za-z0-9._\\u0080-\\uFFFF]*$/;\n\nfunction isCellReference(name) {\n if (/^[RC]$/i.test(name) || /^R\\d*C\\d*$/i.test(name)) {\n // 'R', 'C' and R1C1-style references such as 'R1C1' or 'RC'\n return true;\n }\n const match = /^([A-Z]{1,3})(\\d+)$/i.exec(name);\n if (!match) {\n return false;\n }\n // letters past XFD are not a column, so a name like 'ZZZ1' is fine\n const letters = match[1].toUpperCase();\n const isColumn = letters.length < 3 || letters <= 'XFD';\n const row = parseInt(match[2], 10);\n return isColumn && row >= 1 && row <= 1048576;\n}\n\nfunction isValidTableName(name) {\n return (\n typeof name === 'string' &&\n name.length <= 255 &&\n tableNameRegex.test(name) &&\n !isCellReference(name)\n );\n}\n\nclass Column {\n // wrapper around column model, allowing access and manipulation\n constructor(table, column, index) {\n this.table = table;\n this.column = column;\n this.index = index;\n }\n\n _set(name, value) {\n this.table.cacheState();\n this.column[name] = value;\n }\n\n /* eslint-disable lines-between-class-members */\n get name() {\n return this.column.name;\n }\n set name(value) {\n this._set('name', value);\n }\n\n get filterButton() {\n return this.column.filterButton;\n }\n set filterButton(value) {\n this.column.filterButton = value;\n }\n\n get style() {\n return this.column.style;\n }\n set style(value) {\n this.column.style = value;\n }\n\n get totalsRowLabel() {\n return this.column.totalsRowLabel;\n }\n set totalsRowLabel(value) {\n this._set('totalsRowLabel', value);\n }\n\n get totalsRowFunction() {\n return this.column.totalsRowFunction;\n }\n set totalsRowFunction(value) {\n this._set('totalsRowFunction', value);\n }\n\n get totalsRowResult() {\n return this.column.totalsRowResult;\n }\n set totalsRowResult(value) {\n this._set('totalsRowResult', value);\n }\n\n get totalsRowFormula() {\n return this.column.totalsRowFormula;\n }\n set totalsRowFormula(value) {\n this._set('totalsRowFormula', value);\n }\n /* eslint-enable lines-between-class-members */\n}\n\nclass Table {\n constructor(worksheet, table) {\n this.worksheet = worksheet;\n if (table) {\n this.table = table;\n // check things are ok first\n this.validate();\n\n this.store();\n }\n }\n\n getFormula(column) {\n // get the correct formula to apply to the totals row\n switch (column.totalsRowFunction) {\n case 'none':\n return null;\n case 'average':\n return `SUBTOTAL(101,${this.table.name}[${column.name}])`;\n case 'countNums':\n return `SUBTOTAL(102,${this.table.name}[${column.name}])`;\n case 'count':\n return `SUBTOTAL(103,${this.table.name}[${column.name}])`;\n case 'max':\n return `SUBTOTAL(104,${this.table.name}[${column.name}])`;\n case 'min':\n return `SUBTOTAL(105,${this.table.name}[${column.name}])`;\n case 'stdDev':\n return `SUBTOTAL(106,${this.table.name}[${column.name}])`;\n case 'var':\n return `SUBTOTAL(107,${this.table.name}[${column.name}])`;\n case 'sum':\n return `SUBTOTAL(109,${this.table.name}[${column.name}])`;\n case 'custom':\n return column.totalsRowFormula;\n default:\n throw new Error(`Invalid Totals Row Function: ${column.totalsRowFunction}`);\n }\n }\n\n get width() {\n // width of the table\n return this.table.columns.length;\n }\n\n get height() {\n // height of the table data\n return this.table.rows.length;\n }\n\n get filterHeight() {\n // height of the table data plus optional header row\n return this.height + (this.table.headerRow ? 1 : 0);\n }\n\n get tableHeight() {\n // full height of the table on the sheet\n return this.filterHeight + (this.table.totalsRow ? 1 : 0);\n }\n\n validate() {\n const {table} = this;\n // set defaults and check is valid\n const assign = (o, name, dflt) => {\n if (o[name] === undefined) {\n o[name] = dflt;\n }\n };\n assign(table, 'headerRow', true);\n assign(table, 'totalsRow', false);\n\n assign(table, 'style', {});\n assign(table.style, 'theme', 'TableStyleMedium2');\n assign(table.style, 'showFirstColumn', false);\n assign(table.style, 'showLastColumn', false);\n assign(table.style, 'showRowStripes', false);\n assign(table.style, 'showColumnStripes', false);\n\n const assert = (test, message) => {\n if (!test) {\n throw new Error(message);\n }\n };\n assert(table.name, 'Table must have a name');\n assert(\n isValidTableName(table.name),\n `Invalid table name '${table.name}'. A table name must start with a letter, underscore ` +\n 'or backslash, contain only letters, digits, periods and underscores, ' +\n 'not look like a cell reference and be at most 255 characters long.'\n );\n assert(table.ref, 'Table must have ref');\n assert(table.columns, 'Table must have column definitions');\n assert(table.rows, 'Table must have row definitions');\n\n table.tl = colCache.decodeAddress(table.ref);\n const {row, col} = table.tl;\n assert(row > 0, 'Table must be on valid row');\n assert(col > 0, 'Table must be on valid col');\n\n const {width, filterHeight, tableHeight} = this;\n\n // autoFilterRef is a range that includes optional headers only\n table.autoFilterRef = colCache.encode(row, col, row + filterHeight - 1, col + width - 1);\n\n // tableRef is a range that includes optional headers and totals\n table.tableRef = colCache.encode(row, col, row + tableHeight - 1, col + width - 1);\n\n table.columns.forEach((column, i) => {\n assert(column.name, `Column ${i} must have a name`);\n if (i === 0) {\n assign(column, 'totalsRowLabel', 'Total');\n } else {\n assign(column, 'totalsRowFunction', 'none');\n column.totalsRowFormula = this.getFormula(column);\n }\n });\n }\n\n store() {\n // where the table needs to store table data, headers, footers in\n // the sheet...\n const assignStyle = (cell, style) => {\n if (style) {\n Object.keys(style).forEach(key => {\n cell.style[key] = style[key];\n });\n }\n };\n\n const {worksheet, table} = this;\n const {row, col} = table.tl;\n let count = 0;\n if (table.headerRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const {style, name} = column;\n const cell = r.getCell(col + j);\n cell.value = name;\n assignStyle(cell, style);\n });\n }\n table.rows.forEach(data => {\n const r = worksheet.getRow(row + count++);\n data.forEach((value, j) => {\n const cell = r.getCell(col + j);\n cell.value = value;\n\n assignStyle(cell, table.columns[j].style);\n });\n });\n\n if (table.totalsRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const cell = r.getCell(col + j);\n if (j === 0) {\n cell.value = column.totalsRowLabel;\n } else {\n const formula = this.getFormula(column);\n if (formula) {\n cell.value = {\n formula: column.totalsRowFormula,\n result: column.totalsRowResult,\n };\n } else {\n cell.value = null;\n }\n }\n\n assignStyle(cell, column.style);\n });\n }\n }\n\n load(worksheet) {\n // where the table will read necessary features from a loaded sheet\n const {table} = this;\n const {row, col} = table.tl;\n let count = 0;\n if (table.headerRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const cell = r.getCell(col + j);\n cell.value = column.name;\n });\n }\n table.rows.forEach(data => {\n const r = worksheet.getRow(row + count++);\n data.forEach((value, j) => {\n const cell = r.getCell(col + j);\n cell.value = value;\n });\n });\n\n if (table.totalsRow) {\n const r = worksheet.getRow(row + count++);\n table.columns.forEach((column, j) => {\n const cell = r.getCell(col + j);\n if (j === 0) {\n cell.value = column.totalsRowLabel;\n } else {\n const formula = this.getFormula(column);\n if (formula) {\n cell.value = {\n formula: column.totalsRowFormula,\n result: column.totalsRowResult,\n };\n }\n }\n });\n }\n }\n\n get model() {\n return this.table;\n }\n\n set model(value) {\n this.table = value;\n }\n\n // ================================================================\n // TODO: Mutating methods\n cacheState() {\n if (!this._cache) {\n this._cache = {\n ref: this.ref,\n width: this.width,\n tableHeight: this.tableHeight,\n };\n }\n }\n\n commit() {\n // changes may have been made that might have on-sheet effects\n if (!this._cache) {\n return;\n }\n\n // check things are ok first\n this.validate();\n\n const ref = colCache.decodeAddress(this._cache.ref);\n if (this.ref !== this._cache.ref) {\n // wipe out whole table footprint at previous location\n for (let i = 0; i < this._cache.tableHeight; i++) {\n const row = this.worksheet.getRow(ref.row + i);\n for (let j = 0; j < this._cache.width; j++) {\n const cell = row.getCell(ref.col + j);\n cell.value = null;\n }\n }\n } else {\n // clear out below table if it has shrunk\n for (let i = this.tableHeight; i < this._cache.tableHeight; i++) {\n const row = this.worksheet.getRow(ref.row + i);\n for (let j = 0; j < this._cache.width; j++) {\n const cell = row.getCell(ref.col + j);\n cell.value = null;\n }\n }\n\n // clear out to right of table if it has lost columns\n for (let i = 0; i < this.tableHeight; i++) {\n const row = this.worksheet.getRow(ref.row + i);\n for (let j = this.width; j < this._cache.width; j++) {\n const cell = row.getCell(ref.col + j);\n cell.value = null;\n }\n }\n }\n\n this.store();\n }\n\n addRow(values, rowNumber) {\n // Add a row of data, either insert at rowNumber or append\n this.cacheState();\n\n if (rowNumber === undefined) {\n this.table.rows.push(values);\n } else {\n this.table.rows.splice(rowNumber, 0, values);\n }\n }\n\n removeRows(rowIndex, count = 1) {\n // Remove a rows of data\n this.cacheState();\n this.table.rows.splice(rowIndex, count);\n }\n\n getColumn(colIndex) {\n const column = this.table.columns[colIndex];\n return new Column(this, column, colIndex);\n }\n\n addColumn(column, values, colIndex) {\n // Add a new column, including column defn and values\n // Inserts at colNumber or adds to the right\n this.cacheState();\n\n if (colIndex === undefined) {\n this.table.columns.push(column);\n this.table.rows.forEach((row, i) => {\n row.push(values[i]);\n });\n } else {\n this.table.columns.splice(colIndex, 0, column);\n this.table.rows.forEach((row, i) => {\n row.splice(colIndex, 0, values[i]);\n });\n }\n }\n\n removeColumns(colIndex, count = 1) {\n // Remove a column with data\n this.cacheState();\n\n this.table.columns.splice(colIndex, count);\n this.table.rows.forEach(row => {\n row.splice(colIndex, count);\n });\n }\n\n _assign(target, prop, value) {\n this.cacheState();\n target[prop] = value;\n }\n\n /* eslint-disable lines-between-class-members */\n get ref() {\n return this.table.ref;\n }\n set ref(value) {\n this._assign(this.table, 'ref', value);\n }\n\n get name() {\n return this.table.name;\n }\n set name(value) {\n this.table.name = value;\n }\n\n get displayName() {\n return this.table.displyName || this.table.name;\n }\n set displayNamename(value) {\n this.table.displayName = value;\n }\n\n get headerRow() {\n return this.table.headerRow;\n }\n set headerRow(value) {\n this._assign(this.table, 'headerRow', value);\n }\n\n get totalsRow() {\n return this.table.totalsRow;\n }\n set totalsRow(value) {\n this._assign(this.table, 'totalsRow', value);\n }\n\n get theme() {\n return this.table.style.name;\n }\n set theme(value) {\n this.table.style.name = value;\n }\n\n get showFirstColumn() {\n return this.table.style.showFirstColumn;\n }\n set showFirstColumn(value) {\n this.table.style.showFirstColumn = value;\n }\n\n get showLastColumn() {\n return this.table.style.showLastColumn;\n }\n set showLastColumn(value) {\n this.table.style.showLastColumn = value;\n }\n\n get showRowStripes() {\n return this.table.style.showRowStripes;\n }\n set showRowStripes(value) {\n this.table.style.showRowStripes = value;\n }\n\n get showColumnStripes() {\n return this.table.style.showColumnStripes;\n }\n set showColumnStripes(value) {\n this.table.style.showColumnStripes = value;\n }\n /* eslint-enable lines-between-class-members */\n}\n\nmodule.exports = Table;\n"],"mappings":"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","ignoreList":[]}
@@ -242,6 +242,24 @@ class Worksheet {
242
242
  spliceColumns(start, count, ...inserts) {
243
243
  const rows = this._rows;
244
244
  const nRows = rows.length;
245
+
246
+ // unmerge any merges that touch the spliced or shifted columns so their cells move
247
+ // as plain cells; they are re-merged at their new position below
248
+ const merges = Object.values(this._merges).filter(merge => merge.right >= start);
249
+ merges.forEach(merge => {
250
+ for (let i = merge.top; i <= merge.bottom; i++) {
251
+ for (let j = merge.left; j <= merge.right; j++) {
252
+ // keep each cell's own style (e.g. borders) while unmerging
253
+ const cell = this.getCell(i, j);
254
+ const {
255
+ style
256
+ } = cell;
257
+ cell.unmerge();
258
+ cell.style = style;
259
+ }
260
+ }
261
+ delete this._merges[colCache.encodeAddress(merge.top, merge.left)];
262
+ });
245
263
  if (inserts.length > 0) {
246
264
  // must iterate over all rows whether they exist yet or not
247
265
  for (let i = 0; i < nRows; i++) {
@@ -280,6 +298,29 @@ class Worksheet {
280
298
  this.getColumn(i).defn = null;
281
299
  }
282
300
 
301
+ // re-merge the merges that were unmerged above, shifted, shrunk or grown to match.
302
+ // Inserted columns join a merge only when it continues on both sides of them.
303
+ merges.forEach(merge => {
304
+ let {
305
+ left,
306
+ right
307
+ } = merge;
308
+ if (left >= nKeep) {
309
+ left += nExpand;
310
+ } else if (left >= start) {
311
+ left = start + inserts.length;
312
+ }
313
+ if (right >= nKeep) {
314
+ right += nExpand;
315
+ } else if (right >= start) {
316
+ right = start - 1;
317
+ }
318
+ // drop merges whose columns were all deleted or that are down to a single cell
319
+ if (left < right || left === right && merge.top < merge.bottom) {
320
+ this.mergeCellsWithoutStyle(merge.top, left, merge.bottom, right);
321
+ }
322
+ });
323
+
283
324
  // account for defined names
284
325
  this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);
285
326
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet.js","names":["_","require","colCache","Range","Row","Column","Enums","Image","Table","DataValidations","makePivotTable","Encryptor","copyStyle","Worksheet","constructor","options","_workbook","workbook","id","orderNo","name","state","_rows","_columns","_keys","_merges","rowBreaks","properties","Object","assign","defaultRowHeight","dyDescent","outlineLevelCol","outlineLevelRow","pageSetup","margins","left","right","top","bottom","header","footer","orientation","horizontalDpi","verticalDpi","fitToPage","fitToWidth","fitToHeight","scale","pageOrder","blackAndWhite","draft","cellComments","errors","paperSize","undefined","showRowColHeaders","showGridLines","firstPageNumber","horizontalCentered","verticalCentered","colBreaks","headerFooter","differentFirst","differentOddEven","oddHeader","oddFooter","evenHeader","evenFooter","firstHeader","firstFooter","dataValidations","views","autoFilter","_media","sheetProtection","tables","pivotTables","conditionalFormattings","_name","Error","test","length","console","warn","substring","_worksheets","find","ws","toLowerCase","destroy","removeWorksheetEx","dimensions","forEach","row","rowDims","expand","number","min","max","columns","value","_headerRowCount","reduce","pv","cv","headerCount","headers","Math","count","defn","column","push","getColumnKey","key","setColumnKey","deleteColumnKey","eachColumnKey","f","each","getColumn","c","col","l2n","n","spliceColumns","start","inserts","rows","nRows","i","rowArguments","insert","getRow","splice","apply","r","nExpand","nKeep","nEnd","definedNames","lastColumn","columnCount","maxCount","eachRow","cellCount","actualColumnCount","counts","eachCell","_commitRow","_lastRowNumber","_nextRow","lastRow","findRow","findRows","slice","rowCount","actualRowCount","getRows","addRow","style","rowNo","values","_setStyleOption","addRows","insertRow","pos","spliceRows","insertRows","_copyStyle","src","dest","styleEmpty","rSrc","rDst","includeEmpty","cell","colNumber","getCell","height","duplicateRow","rowNum","Array","fill","nInserts","nFrom","nTo","_value","cellToBeMerged","_row","_number","prevMaster","_master","newMaster","_column","merge","iteratee","hasValues","getSheetValues","findCell","address","getAddress","getCellEx","mergeCells","cells","_mergeCellsInternal","mergeCellsWithoutStyle","ignoreStyle","intersects","master","j","_unMergeMaster","unmerge","hasMerges","some","Boolean","unMergeCells","type","ValueType","Merge","fillFormula","range","formula","results","shareType","decoded","decode","width","masterAddress","encodeAddress","isShared","getResult","isArray","first","ref","result","sharedFormula","addImage","imageId","model","getImages","filter","m","addBackgroundImage","getBackgroundImageId","image","protect","password","Promise","resolve","sheet","spinCount","Number","isFinite","round","algorithmName","saltValue","randomBytes","toString","hashValue","convertPasswordToHash","unprotect","addTable","table","getTable","removeTable","getTables","addPivotTable","pivotTable","addConditionalFormatting","cf","removeConditionalFormatting","Function","tabColor","trace","media","map","medium","cols","toModel","rowModel","merges","_parseRows","_parseMergeCells","fromModel","t","module","exports"],"sources":["../../../lib/doc/worksheet.js"],"sourcesContent":["const _ = require('../utils/under-dash');\n\nconst colCache = require('../utils/col-cache');\nconst Range = require('./range');\nconst Row = require('./row');\nconst Column = require('./column');\nconst Enums = require('./enums');\nconst Image = require('./image');\nconst Table = require('./table');\nconst DataValidations = require('./data-validations');\nconst {makePivotTable} = require('./pivot-table');\nconst Encryptor = require('../utils/encryptor');\nconst {copyStyle} = require('../utils/copy-style');\n\n// Worksheet requirements\n// Operate as sheet inside workbook or standalone\n// Load and Save from file and stream\n// Access/Add/Delete individual cells\n// Manage column widths and row heights\n\nclass Worksheet {\n constructor(options) {\n options = options || {};\n this._workbook = options.workbook;\n\n // in a workbook, each sheet will have a number\n this.id = options.id;\n this.orderNo = options.orderNo;\n\n // and a name\n this.name = options.name;\n\n // add a state\n this.state = options.state || 'visible';\n\n // rows allows access organised by row. Sparse array of arrays indexed by row-1, col\n // Note: _rows is zero based. Must subtract 1 to go from cell.row to index\n this._rows = [];\n\n // column definitions\n this._columns = null;\n\n // column keys (addRow convenience): key ==> this._collumns index\n this._keys = {};\n\n // keep record of all merges\n this._merges = {};\n\n // record of all row and column pageBreaks\n this.rowBreaks = [];\n\n // for tabColor, default row height, outline levels, etc\n this.properties = Object.assign(\n {},\n {\n defaultRowHeight: 15,\n dyDescent: 55,\n outlineLevelCol: 0,\n outlineLevelRow: 0,\n },\n options.properties\n );\n\n // for all things printing\n this.pageSetup = Object.assign(\n {},\n {\n margins: {left: 0.7, right: 0.7, top: 0.75, bottom: 0.75, header: 0.3, footer: 0.3},\n orientation: 'portrait',\n horizontalDpi: 4294967295,\n verticalDpi: 4294967295,\n fitToPage: !!(\n options.pageSetup &&\n (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) &&\n !options.pageSetup.scale\n ),\n pageOrder: 'downThenOver',\n blackAndWhite: false,\n draft: false,\n cellComments: 'None',\n errors: 'displayed',\n scale: 100,\n fitToWidth: 1,\n fitToHeight: 1,\n paperSize: undefined,\n showRowColHeaders: false,\n showGridLines: false,\n firstPageNumber: undefined,\n horizontalCentered: false,\n verticalCentered: false,\n rowBreaks: null,\n colBreaks: null,\n },\n options.pageSetup\n );\n\n this.headerFooter = Object.assign(\n {},\n {\n differentFirst: false,\n differentOddEven: false,\n oddHeader: null,\n oddFooter: null,\n evenHeader: null,\n evenFooter: null,\n firstHeader: null,\n firstFooter: null,\n },\n options.headerFooter\n );\n\n this.dataValidations = new DataValidations();\n\n // for freezepanes, split, zoom, gridlines, etc\n this.views = options.views || [];\n\n this.autoFilter = options.autoFilter || null;\n\n // for images, etc\n this._media = [];\n\n // worksheet protection\n this.sheetProtection = null;\n\n // for tables\n this.tables = {};\n\n this.pivotTables = [];\n\n this.conditionalFormattings = [];\n }\n\n get name() {\n return this._name;\n }\n\n set name(name) {\n if (name === undefined) {\n name = `sheet${this.id}`;\n }\n\n if (this._name === name) return;\n\n if (typeof name !== 'string') {\n throw new Error('The name has to be a string.');\n }\n\n if (name === '') {\n throw new Error('The name can\\'t be empty.');\n }\n\n if (name === 'History') {\n throw new Error('The name \"History\" is protected. Please use a different name.');\n }\n\n // Illegal character in worksheet name: asterisk (*), question mark (?),\n // colon (:), forward slash (/ \\), or bracket ([])\n if (/[*?:/\\\\[\\]]/.test(name)) {\n throw new Error(`Worksheet name ${name} cannot include any of the following characters: * ? : \\\\ / [ ]`);\n }\n\n if (/(^')|('$)/.test(name)) {\n throw new Error(`The first or last character of worksheet name cannot be a single quotation mark: ${name}`);\n }\n\n if (name && name.length > 31) {\n // eslint-disable-next-line no-console\n console.warn(`Worksheet name ${name} exceeds 31 chars. This will be truncated`);\n name = name.substring(0, 31);\n }\n\n if (\n this._workbook._worksheets.find(\n ws => ws && ws !== this && ws.name.toLowerCase() === name.toLowerCase()\n )\n ) {\n throw new Error(`Worksheet name already exists: ${name}`);\n }\n\n this._name = name;\n }\n\n get workbook() {\n return this._workbook;\n }\n\n // when you're done with this worksheet, call this to remove from workbook\n destroy() {\n this._workbook.removeWorksheetEx(this);\n }\n\n // Get the bounding range of the cells in this worksheet\n get dimensions() {\n const dimensions = new Range();\n this._rows.forEach(row => {\n if (row) {\n const rowDims = row.dimensions;\n if (rowDims) {\n dimensions.expand(row.number, rowDims.min, row.number, rowDims.max);\n }\n }\n });\n return dimensions;\n }\n\n // =========================================================================\n // Columns\n\n // get the current columns array.\n get columns() {\n return this._columns;\n }\n\n // set the columns from an array of column definitions.\n // Note: any headers defined will overwrite existing values.\n set columns(value) {\n // calculate max header row count\n this._headerRowCount = value.reduce((pv, cv) => {\n const headerCount = (cv.header && 1) || (cv.headers && cv.headers.length) || 0;\n return Math.max(pv, headerCount);\n }, 0);\n\n // construct Column objects\n let count = 1;\n const columns = (this._columns = []);\n value.forEach(defn => {\n const column = new Column(this, count++, false);\n columns.push(column);\n column.defn = defn;\n });\n }\n\n getColumnKey(key) {\n return this._keys[key];\n }\n\n setColumnKey(key, value) {\n this._keys[key] = value;\n }\n\n deleteColumnKey(key) {\n delete this._keys[key];\n }\n\n eachColumnKey(f) {\n _.each(this._keys, f);\n }\n\n // get a single column by col number. If it doesn't exist, create it and any gaps before it\n getColumn(c) {\n if (typeof c === 'string') {\n // if it matches a key'd column, return that\n const col = this._keys[c];\n if (col) return col;\n\n // otherwise, assume letter\n c = colCache.l2n(c);\n }\n if (!this._columns) {\n this._columns = [];\n }\n if (c > this._columns.length) {\n let n = this._columns.length + 1;\n while (n <= c) {\n this._columns.push(new Column(this, n++));\n }\n }\n return this._columns[c - 1];\n }\n\n spliceColumns(start, count, ...inserts) {\n const rows = this._rows;\n const nRows = rows.length;\n if (inserts.length > 0) {\n // must iterate over all rows whether they exist yet or not\n for (let i = 0; i < nRows; i++) {\n const rowArguments = [start, count];\n // eslint-disable-next-line no-loop-func\n inserts.forEach(insert => {\n rowArguments.push(insert[i] || null);\n });\n const row = this.getRow(i + 1);\n // eslint-disable-next-line prefer-spread\n row.splice.apply(row, rowArguments);\n }\n } else {\n // nothing to insert, so just splice all rows\n this._rows.forEach(r => {\n if (r) {\n r.splice(start, count);\n }\n });\n }\n\n // splice column definitions\n const nExpand = inserts.length - count;\n const nKeep = start + count;\n const nEnd = this._columns.length;\n if (nExpand < 0) {\n for (let i = start + inserts.length; i <= nEnd; i++) {\n this.getColumn(i).defn = this.getColumn(i - nExpand).defn;\n }\n } else if (nExpand > 0) {\n for (let i = nEnd; i >= nKeep; i--) {\n this.getColumn(i + nExpand).defn = this.getColumn(i).defn;\n }\n }\n for (let i = start; i < start + inserts.length; i++) {\n this.getColumn(i).defn = null;\n }\n\n // account for defined names\n this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);\n }\n\n get lastColumn() {\n return this.getColumn(this.columnCount);\n }\n\n get columnCount() {\n let maxCount = 0;\n this.eachRow(row => {\n maxCount = Math.max(maxCount, row.cellCount);\n });\n return maxCount;\n }\n\n get actualColumnCount() {\n // performance nightmare - for each row, counts all the columns used\n const counts = [];\n let count = 0;\n this.eachRow(row => {\n row.eachCell(({col}) => {\n if (!counts[col]) {\n counts[col] = true;\n count++;\n }\n });\n });\n return count;\n }\n\n // =========================================================================\n // Rows\n\n _commitRow() {\n // nop - allows streaming reader to fill a document\n }\n\n get _lastRowNumber() {\n // need to cope with results of splice\n const rows = this._rows;\n let n = rows.length;\n while (n > 0 && rows[n - 1] === undefined) {\n n--;\n }\n return n;\n }\n\n get _nextRow() {\n return this._lastRowNumber + 1;\n }\n\n get lastRow() {\n if (this._rows.length) {\n return this._rows[this._rows.length - 1];\n }\n return undefined;\n }\n\n // find a row (if exists) by row number\n findRow(r) {\n return this._rows[r - 1];\n }\n\n // find multiple rows (if exists) by row number\n findRows(start, length) {\n return this._rows.slice(start - 1, start - 1 + length);\n }\n\n get rowCount() {\n return this._lastRowNumber;\n }\n\n get actualRowCount() {\n // counts actual rows that have actual data\n let count = 0;\n this.eachRow(() => {\n count++;\n });\n return count;\n }\n\n // get a row by row number.\n getRow(r) {\n let row = this._rows[r - 1];\n if (!row) {\n row = this._rows[r - 1] = new Row(this, r);\n }\n return row;\n }\n\n // get multiple rows by row number.\n getRows(start, length) {\n if (length < 1) return undefined;\n const rows = [];\n for (let i = start; i < start + length; i++) {\n rows.push(this.getRow(i));\n }\n return rows;\n }\n\n addRow(value, style = 'n') {\n const rowNo = this._nextRow;\n const row = this.getRow(rowNo);\n row.values = value;\n this._setStyleOption(rowNo, style[0] === 'i' ? style : 'n');\n return row;\n }\n\n addRows(value, style = 'n') {\n const rows = [];\n value.forEach(row => {\n rows.push(this.addRow(row, style));\n });\n return rows;\n }\n\n insertRow(pos, value, style = 'n') {\n this.spliceRows(pos, 0, value);\n this._setStyleOption(pos, style);\n return this.getRow(pos);\n }\n\n insertRows(pos, values, style = 'n') {\n this.spliceRows(pos, 0, ...values);\n if (style !== 'n') {\n // copy over the styles\n for (let i = 0; i < values.length; i++) {\n if (style[0] === 'o' && this.findRow(values.length + pos + i) !== undefined) {\n this._copyStyle(values.length + pos + i, pos + i, style[1] === '+');\n } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {\n this._copyStyle(pos - 1, pos + i, style[1] === '+');\n }\n }\n }\n return this.getRows(pos, values.length);\n }\n\n // set row at position to same style as of either pervious row (option 'i') or next row (option 'o')\n _setStyleOption(pos, style = 'n') {\n if (style[0] === 'o' && this.findRow(pos + 1) !== undefined) {\n this._copyStyle(pos + 1, pos, style[1] === '+');\n } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {\n this._copyStyle(pos - 1, pos, style[1] === '+');\n }\n }\n\n _copyStyle(src, dest, styleEmpty = false) {\n const rSrc = this.getRow(src);\n const rDst = this.getRow(dest);\n rDst.style = copyStyle(rSrc.style);\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: styleEmpty}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = copyStyle(cell.style);\n });\n rDst.height = rSrc.height;\n }\n\n duplicateRow(rowNum, count, insert = false) {\n // create count duplicates of rowNum\n // either inserting new or overwriting existing rows\n\n const rSrc = this._rows[rowNum - 1];\n const inserts = new Array(count).fill(rSrc.values);\n this.spliceRows(rowNum + 1, insert ? 0 : count, ...inserts);\n\n // now copy styles...\n for (let i = 0; i < count; i++) {\n const rDst = this._rows[rowNum + i];\n rDst.style = rSrc.style;\n rDst.height = rSrc.height;\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = cell.style;\n });\n }\n }\n\n spliceRows(start, count, ...inserts) {\n // same problem as row.splice, except worse.\n const nKeep = start + count;\n const nInserts = inserts.length;\n const nExpand = nInserts - count;\n const nEnd = this._rows.length;\n let i;\n let rSrc;\n if (nExpand < 0) {\n // remove rows by moving the rows below the splice up\n for (i = nKeep; i <= nEnd; i++) {\n rSrc = this._rows[i - 1];\n if (rSrc) {\n const rDst = this.getRow(i + nExpand);\n rDst.values = rSrc.values;\n rDst.style = rSrc.style;\n rDst.height = rSrc.height;\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = cell.style;\n });\n this._rows[i - 1] = undefined;\n } else {\n this._rows[i + nExpand - 1] = undefined;\n }\n }\n\n // The move above only overwrites rows up to (nEnd + nExpand). When there are\n // not enough rows below the splice, rows from there to (nKeep - 1) would be\n // left behind, so clear them (but not past the end of the sheet).\n const nFrom = Math.max(start + nInserts, nEnd + nExpand + 1);\n const nTo = Math.min(nKeep - 1, nEnd);\n for (i = nFrom; i <= nTo; i++) {\n this._rows[i - 1] = undefined;\n }\n } else if (nExpand > 0) {\n // insert new cells\n for (i = nEnd; i >= nKeep; i--) {\n rSrc = this._rows[i - 1];\n if (rSrc) {\n const rDst = this.getRow(i + nExpand);\n rDst.values = rSrc.values;\n rDst.style = rSrc.style;\n rDst.height = rSrc.height;\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = cell.style;\n\n // remerge cells accounting for insert offset\n if (cell._value.constructor.name === 'MergeValue') {\n const cellToBeMerged = this.getRow(cell._row._number + nInserts).getCell(colNumber);\n const prevMaster = cell._value._master;\n const newMaster = this.getRow(prevMaster._row._number + nInserts).getCell(prevMaster._column._number);\n cellToBeMerged.merge(newMaster);\n }\n });\n } else {\n this._rows[i + nExpand - 1] = undefined;\n }\n }\n }\n\n // now copy over the new values\n for (i = 0; i < nInserts; i++) {\n const rDst = this.getRow(start + i);\n rDst.style = {};\n rDst.values = inserts[i];\n }\n\n // account for defined names\n this.workbook.definedNames.spliceRows(this.name, start, count, nInserts);\n }\n\n // iterate over every row in the worksheet, including maybe empty rows\n eachRow(options, iteratee) {\n if (!iteratee) {\n iteratee = options;\n options = undefined;\n }\n if (options && options.includeEmpty) {\n const n = this._rows.length;\n for (let i = 1; i <= n; i++) {\n iteratee(this.getRow(i), i);\n }\n } else {\n this._rows.forEach(row => {\n if (row && row.hasValues) {\n iteratee(row, row.number);\n }\n });\n }\n }\n\n // return all rows as sparse array\n getSheetValues() {\n const rows = [];\n this._rows.forEach(row => {\n if (row) {\n rows[row.number] = row.values;\n }\n });\n return rows;\n }\n\n // =========================================================================\n // Cells\n\n // returns the cell at [r,c] or address given by r. If not found, return undefined\n findCell(r, c) {\n const address = colCache.getAddress(r, c);\n const row = this._rows[address.row - 1];\n return row ? row.findCell(address.col) : undefined;\n }\n\n // return the cell at [r,c] or address given by r. If not found, create a new one.\n getCell(r, c) {\n const address = colCache.getAddress(r, c);\n const row = this.getRow(address.row);\n return row.getCellEx(address);\n }\n\n // =========================================================================\n // Merge\n\n // convert the range defined by ['tl:br'], [tl,br] or [t,l,b,r] into a single 'merged' cell\n mergeCells(...cells) {\n const dimensions = new Range(cells);\n this._mergeCellsInternal(dimensions);\n }\n\n mergeCellsWithoutStyle(...cells) {\n const dimensions = new Range(cells);\n this._mergeCellsInternal(dimensions, true);\n }\n\n _mergeCellsInternal(dimensions, ignoreStyle) {\n // check cells aren't already merged\n _.each(this._merges, merge => {\n if (merge.intersects(dimensions)) {\n throw new Error('Cannot merge already merged cells');\n }\n });\n\n // apply merge\n const master = this.getCell(dimensions.top, dimensions.left);\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\n for (let j = dimensions.left; j <= dimensions.right; j++) {\n // merge all but the master cell\n if (i > dimensions.top || j > dimensions.left) {\n this.getCell(i, j).merge(master, ignoreStyle);\n }\n }\n }\n\n // index merge\n this._merges[master.address] = dimensions;\n }\n\n _unMergeMaster(master) {\n // master is always top left of a rectangle\n const merge = this._merges[master.address];\n if (merge) {\n for (let i = merge.top; i <= merge.bottom; i++) {\n for (let j = merge.left; j <= merge.right; j++) {\n this.getCell(i, j).unmerge();\n }\n }\n delete this._merges[master.address];\n }\n }\n\n get hasMerges() {\n // return true if this._merges has a merge object\n return _.some(this._merges, Boolean);\n }\n\n // scan the range defined by ['tl:br'], [tl,br] or [t,l,b,r] and if any cell is part of a merge,\n // un-merge the group. Note this function can affect multiple merges and merge-blocks are\n // atomic - either they're all merged or all un-merged.\n unMergeCells(...cells) {\n const dimensions = new Range(cells);\n\n // find any cells in that range and unmerge them\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\n for (let j = dimensions.left; j <= dimensions.right; j++) {\n const cell = this.findCell(i, j);\n if (cell) {\n if (cell.type === Enums.ValueType.Merge) {\n // this cell merges to another master\n this._unMergeMaster(cell.master);\n } else if (this._merges[cell.address]) {\n // this cell is a master\n this._unMergeMaster(cell);\n }\n }\n }\n }\n }\n\n // ===========================================================================\n // Shared/Array Formula\n fillFormula(range, formula, results, shareType = 'shared') {\n // Define formula for top-left cell and share to rest\n const decoded = colCache.decode(range);\n const {top, left, bottom, right} = decoded;\n const width = right - left + 1;\n const masterAddress = colCache.encodeAddress(top, left);\n const isShared = shareType === 'shared';\n\n // work out result accessor\n let getResult;\n if (typeof results === 'function') {\n getResult = results;\n } else if (Array.isArray(results)) {\n if (Array.isArray(results[0])) {\n getResult = (row, col) => results[row - top][col - left];\n } else {\n // eslint-disable-next-line no-mixed-operators\n getResult = (row, col) => results[(row - top) * width + (col - left)];\n }\n } else {\n getResult = () => undefined;\n }\n let first = true;\n for (let r = top; r <= bottom; r++) {\n for (let c = left; c <= right; c++) {\n if (first) {\n this.getCell(r, c).value = {\n shareType,\n formula,\n ref: range,\n result: getResult(r, c),\n };\n first = false;\n } else {\n this.getCell(r, c).value = isShared\n ? {\n sharedFormula: masterAddress,\n result: getResult(r, c),\n }\n : getResult(r, c);\n }\n }\n }\n }\n\n // =========================================================================\n // Images\n addImage(imageId, range) {\n const model = {\n type: 'image',\n imageId,\n range,\n };\n this._media.push(new Image(this, model));\n }\n\n getImages() {\n return this._media.filter(m => m.type === 'image');\n }\n\n addBackgroundImage(imageId) {\n const model = {\n type: 'background',\n imageId,\n };\n this._media.push(new Image(this, model));\n }\n\n getBackgroundImageId() {\n const image = this._media.find(m => m.type === 'background');\n return image && image.imageId;\n }\n\n // =========================================================================\n // Worksheet Protection\n protect(password, options) {\n // TODO: make this function truly async\n // perhaps marshal to worker thread or something\n return new Promise(resolve => {\n this.sheetProtection = {\n sheet: true,\n };\n if (options && 'spinCount' in options) {\n // force spinCount to be integer >= 0\n options.spinCount = Number.isFinite(options.spinCount) ? Math.round(Math.max(0, options.spinCount)) : 100000;\n }\n if (password) {\n this.sheetProtection.algorithmName = 'SHA-512';\n this.sheetProtection.saltValue = Encryptor.randomBytes(16).toString('base64');\n this.sheetProtection.spinCount = options && 'spinCount' in options ? options.spinCount : 100000; // allow user specified spinCount\n this.sheetProtection.hashValue = Encryptor.convertPasswordToHash(\n password,\n 'SHA512',\n this.sheetProtection.saltValue,\n this.sheetProtection.spinCount\n );\n }\n if (options) {\n this.sheetProtection = Object.assign(this.sheetProtection, options);\n if (!password && 'spinCount' in options) {\n delete this.sheetProtection.spinCount;\n }\n }\n resolve();\n });\n }\n\n unprotect() {\n this.sheetProtection = null;\n }\n\n // =========================================================================\n // Tables\n addTable(model) {\n const table = new Table(this, model);\n this.tables[model.name] = table;\n return table;\n }\n\n getTable(name) {\n return this.tables[name];\n }\n\n removeTable(name) {\n delete this.tables[name];\n }\n\n getTables() {\n return Object.values(this.tables);\n }\n\n // =========================================================================\n // Pivot Tables\n addPivotTable(model) {\n // eslint-disable-next-line no-console\n console.warn(\n `Warning: Pivot Table support is experimental. \nPlease leave feedback at https://github.com/exceljs/exceljs/discussions/2575`\n );\n\n const pivotTable = makePivotTable(this, model);\n\n this.pivotTables.push(pivotTable);\n this.workbook.pivotTables.push(pivotTable);\n\n return pivotTable;\n }\n\n // ===========================================================================\n // Conditional Formatting\n addConditionalFormatting(cf) {\n this.conditionalFormattings.push(cf);\n }\n\n removeConditionalFormatting(filter) {\n if (typeof filter === 'number') {\n this.conditionalFormattings.splice(filter, 1);\n } else if (filter instanceof Function) {\n this.conditionalFormattings = this.conditionalFormattings.filter(filter);\n } else {\n this.conditionalFormattings = [];\n }\n }\n\n // ===========================================================================\n // Deprecated\n get tabColor() {\n // eslint-disable-next-line no-console\n console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');\n return this.properties.tabColor;\n }\n\n set tabColor(value) {\n // eslint-disable-next-line no-console\n console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');\n this.properties.tabColor = value;\n }\n\n // ===========================================================================\n // Model\n\n get model() {\n const model = {\n id: this.id,\n name: this.name,\n dataValidations: this.dataValidations.model,\n properties: this.properties,\n state: this.state,\n pageSetup: this.pageSetup,\n headerFooter: this.headerFooter,\n rowBreaks: this.rowBreaks,\n views: this.views,\n autoFilter: this.autoFilter,\n media: this._media.map(medium => medium.model),\n sheetProtection: this.sheetProtection,\n tables: Object.values(this.tables).map(table => table.model),\n pivotTables: this.pivotTables,\n conditionalFormattings: this.conditionalFormattings,\n };\n\n // =================================================\n // columns\n model.cols = Column.toModel(this.columns);\n\n // ==========================================================\n // Rows\n const rows = (model.rows = []);\n const dimensions = (model.dimensions = new Range());\n this._rows.forEach(row => {\n const rowModel = row && row.model;\n if (rowModel) {\n dimensions.expand(rowModel.number, rowModel.min, rowModel.number, rowModel.max);\n rows.push(rowModel);\n }\n });\n\n // ==========================================================\n // Merges\n model.merges = [];\n _.each(this._merges, merge => {\n model.merges.push(merge.range);\n });\n\n return model;\n }\n\n _parseRows(model) {\n this._rows = [];\n model.rows.forEach(rowModel => {\n const row = new Row(this, rowModel.number);\n this._rows[row.number - 1] = row;\n row.model = rowModel;\n });\n }\n\n _parseMergeCells(model) {\n _.each(model.mergeCells, merge => {\n // Do not merge styles when importing an Excel file\n // since each cell may have different styles intentionally.\n this.mergeCellsWithoutStyle(merge);\n });\n }\n\n set model(value) {\n this.name = value.name;\n this._columns = Column.fromModel(this, value.cols);\n this._parseRows(value);\n\n this._parseMergeCells(value);\n this.dataValidations = new DataValidations(value.dataValidations);\n this.properties = value.properties;\n this.pageSetup = value.pageSetup;\n this.headerFooter = value.headerFooter;\n this.views = value.views;\n this.autoFilter = value.autoFilter;\n this._media = value.media.map(medium => new Image(this, medium));\n this.sheetProtection = value.sheetProtection;\n this.tables = value.tables.reduce((tables, table) => {\n const t = new Table();\n t.model = table;\n tables[table.name] = t;\n return tables;\n }, {});\n this.pivotTables = value.pivotTables;\n this.conditionalFormattings = value.conditionalFormattings;\n }\n}\n\nmodule.exports = Worksheet;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"worksheet.js","names":["_","require","colCache","Range","Row","Column","Enums","Image","Table","DataValidations","makePivotTable","Encryptor","copyStyle","Worksheet","constructor","options","_workbook","workbook","id","orderNo","name","state","_rows","_columns","_keys","_merges","rowBreaks","properties","Object","assign","defaultRowHeight","dyDescent","outlineLevelCol","outlineLevelRow","pageSetup","margins","left","right","top","bottom","header","footer","orientation","horizontalDpi","verticalDpi","fitToPage","fitToWidth","fitToHeight","scale","pageOrder","blackAndWhite","draft","cellComments","errors","paperSize","undefined","showRowColHeaders","showGridLines","firstPageNumber","horizontalCentered","verticalCentered","colBreaks","headerFooter","differentFirst","differentOddEven","oddHeader","oddFooter","evenHeader","evenFooter","firstHeader","firstFooter","dataValidations","views","autoFilter","_media","sheetProtection","tables","pivotTables","conditionalFormattings","_name","Error","test","length","console","warn","substring","_worksheets","find","ws","toLowerCase","destroy","removeWorksheetEx","dimensions","forEach","row","rowDims","expand","number","min","max","columns","value","_headerRowCount","reduce","pv","cv","headerCount","headers","Math","count","defn","column","push","getColumnKey","key","setColumnKey","deleteColumnKey","eachColumnKey","f","each","getColumn","c","col","l2n","n","spliceColumns","start","inserts","rows","nRows","merges","values","filter","merge","i","j","cell","getCell","style","unmerge","encodeAddress","rowArguments","insert","getRow","splice","apply","r","nExpand","nKeep","nEnd","mergeCellsWithoutStyle","definedNames","lastColumn","columnCount","maxCount","eachRow","cellCount","actualColumnCount","counts","eachCell","_commitRow","_lastRowNumber","_nextRow","lastRow","findRow","findRows","slice","rowCount","actualRowCount","getRows","addRow","rowNo","_setStyleOption","addRows","insertRow","pos","spliceRows","insertRows","_copyStyle","src","dest","styleEmpty","rSrc","rDst","includeEmpty","colNumber","height","duplicateRow","rowNum","Array","fill","nInserts","nFrom","nTo","_value","cellToBeMerged","_row","_number","prevMaster","_master","newMaster","_column","iteratee","hasValues","getSheetValues","findCell","address","getAddress","getCellEx","mergeCells","cells","_mergeCellsInternal","ignoreStyle","intersects","master","_unMergeMaster","hasMerges","some","Boolean","unMergeCells","type","ValueType","Merge","fillFormula","range","formula","results","shareType","decoded","decode","width","masterAddress","isShared","getResult","isArray","first","ref","result","sharedFormula","addImage","imageId","model","getImages","m","addBackgroundImage","getBackgroundImageId","image","protect","password","Promise","resolve","sheet","spinCount","Number","isFinite","round","algorithmName","saltValue","randomBytes","toString","hashValue","convertPasswordToHash","unprotect","addTable","table","getTable","removeTable","getTables","addPivotTable","pivotTable","addConditionalFormatting","cf","removeConditionalFormatting","Function","tabColor","trace","media","map","medium","cols","toModel","rowModel","_parseRows","_parseMergeCells","fromModel","t","module","exports"],"sources":["../../../lib/doc/worksheet.js"],"sourcesContent":["const _ = require('../utils/under-dash');\n\nconst colCache = require('../utils/col-cache');\nconst Range = require('./range');\nconst Row = require('./row');\nconst Column = require('./column');\nconst Enums = require('./enums');\nconst Image = require('./image');\nconst Table = require('./table');\nconst DataValidations = require('./data-validations');\nconst {makePivotTable} = require('./pivot-table');\nconst Encryptor = require('../utils/encryptor');\nconst {copyStyle} = require('../utils/copy-style');\n\n// Worksheet requirements\n// Operate as sheet inside workbook or standalone\n// Load and Save from file and stream\n// Access/Add/Delete individual cells\n// Manage column widths and row heights\n\nclass Worksheet {\n constructor(options) {\n options = options || {};\n this._workbook = options.workbook;\n\n // in a workbook, each sheet will have a number\n this.id = options.id;\n this.orderNo = options.orderNo;\n\n // and a name\n this.name = options.name;\n\n // add a state\n this.state = options.state || 'visible';\n\n // rows allows access organised by row. Sparse array of arrays indexed by row-1, col\n // Note: _rows is zero based. Must subtract 1 to go from cell.row to index\n this._rows = [];\n\n // column definitions\n this._columns = null;\n\n // column keys (addRow convenience): key ==> this._collumns index\n this._keys = {};\n\n // keep record of all merges\n this._merges = {};\n\n // record of all row and column pageBreaks\n this.rowBreaks = [];\n\n // for tabColor, default row height, outline levels, etc\n this.properties = Object.assign(\n {},\n {\n defaultRowHeight: 15,\n dyDescent: 55,\n outlineLevelCol: 0,\n outlineLevelRow: 0,\n },\n options.properties\n );\n\n // for all things printing\n this.pageSetup = Object.assign(\n {},\n {\n margins: {left: 0.7, right: 0.7, top: 0.75, bottom: 0.75, header: 0.3, footer: 0.3},\n orientation: 'portrait',\n horizontalDpi: 4294967295,\n verticalDpi: 4294967295,\n fitToPage: !!(\n options.pageSetup &&\n (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) &&\n !options.pageSetup.scale\n ),\n pageOrder: 'downThenOver',\n blackAndWhite: false,\n draft: false,\n cellComments: 'None',\n errors: 'displayed',\n scale: 100,\n fitToWidth: 1,\n fitToHeight: 1,\n paperSize: undefined,\n showRowColHeaders: false,\n showGridLines: false,\n firstPageNumber: undefined,\n horizontalCentered: false,\n verticalCentered: false,\n rowBreaks: null,\n colBreaks: null,\n },\n options.pageSetup\n );\n\n this.headerFooter = Object.assign(\n {},\n {\n differentFirst: false,\n differentOddEven: false,\n oddHeader: null,\n oddFooter: null,\n evenHeader: null,\n evenFooter: null,\n firstHeader: null,\n firstFooter: null,\n },\n options.headerFooter\n );\n\n this.dataValidations = new DataValidations();\n\n // for freezepanes, split, zoom, gridlines, etc\n this.views = options.views || [];\n\n this.autoFilter = options.autoFilter || null;\n\n // for images, etc\n this._media = [];\n\n // worksheet protection\n this.sheetProtection = null;\n\n // for tables\n this.tables = {};\n\n this.pivotTables = [];\n\n this.conditionalFormattings = [];\n }\n\n get name() {\n return this._name;\n }\n\n set name(name) {\n if (name === undefined) {\n name = `sheet${this.id}`;\n }\n\n if (this._name === name) return;\n\n if (typeof name !== 'string') {\n throw new Error('The name has to be a string.');\n }\n\n if (name === '') {\n throw new Error('The name can\\'t be empty.');\n }\n\n if (name === 'History') {\n throw new Error('The name \"History\" is protected. Please use a different name.');\n }\n\n // Illegal character in worksheet name: asterisk (*), question mark (?),\n // colon (:), forward slash (/ \\), or bracket ([])\n if (/[*?:/\\\\[\\]]/.test(name)) {\n throw new Error(`Worksheet name ${name} cannot include any of the following characters: * ? : \\\\ / [ ]`);\n }\n\n if (/(^')|('$)/.test(name)) {\n throw new Error(`The first or last character of worksheet name cannot be a single quotation mark: ${name}`);\n }\n\n if (name && name.length > 31) {\n // eslint-disable-next-line no-console\n console.warn(`Worksheet name ${name} exceeds 31 chars. This will be truncated`);\n name = name.substring(0, 31);\n }\n\n if (\n this._workbook._worksheets.find(\n ws => ws && ws !== this && ws.name.toLowerCase() === name.toLowerCase()\n )\n ) {\n throw new Error(`Worksheet name already exists: ${name}`);\n }\n\n this._name = name;\n }\n\n get workbook() {\n return this._workbook;\n }\n\n // when you're done with this worksheet, call this to remove from workbook\n destroy() {\n this._workbook.removeWorksheetEx(this);\n }\n\n // Get the bounding range of the cells in this worksheet\n get dimensions() {\n const dimensions = new Range();\n this._rows.forEach(row => {\n if (row) {\n const rowDims = row.dimensions;\n if (rowDims) {\n dimensions.expand(row.number, rowDims.min, row.number, rowDims.max);\n }\n }\n });\n return dimensions;\n }\n\n // =========================================================================\n // Columns\n\n // get the current columns array.\n get columns() {\n return this._columns;\n }\n\n // set the columns from an array of column definitions.\n // Note: any headers defined will overwrite existing values.\n set columns(value) {\n // calculate max header row count\n this._headerRowCount = value.reduce((pv, cv) => {\n const headerCount = (cv.header && 1) || (cv.headers && cv.headers.length) || 0;\n return Math.max(pv, headerCount);\n }, 0);\n\n // construct Column objects\n let count = 1;\n const columns = (this._columns = []);\n value.forEach(defn => {\n const column = new Column(this, count++, false);\n columns.push(column);\n column.defn = defn;\n });\n }\n\n getColumnKey(key) {\n return this._keys[key];\n }\n\n setColumnKey(key, value) {\n this._keys[key] = value;\n }\n\n deleteColumnKey(key) {\n delete this._keys[key];\n }\n\n eachColumnKey(f) {\n _.each(this._keys, f);\n }\n\n // get a single column by col number. If it doesn't exist, create it and any gaps before it\n getColumn(c) {\n if (typeof c === 'string') {\n // if it matches a key'd column, return that\n const col = this._keys[c];\n if (col) return col;\n\n // otherwise, assume letter\n c = colCache.l2n(c);\n }\n if (!this._columns) {\n this._columns = [];\n }\n if (c > this._columns.length) {\n let n = this._columns.length + 1;\n while (n <= c) {\n this._columns.push(new Column(this, n++));\n }\n }\n return this._columns[c - 1];\n }\n\n spliceColumns(start, count, ...inserts) {\n const rows = this._rows;\n const nRows = rows.length;\n\n // unmerge any merges that touch the spliced or shifted columns so their cells move\n // as plain cells; they are re-merged at their new position below\n const merges = Object.values(this._merges).filter(merge => merge.right >= start);\n merges.forEach(merge => {\n for (let i = merge.top; i <= merge.bottom; i++) {\n for (let j = merge.left; j <= merge.right; j++) {\n // keep each cell's own style (e.g. borders) while unmerging\n const cell = this.getCell(i, j);\n const {style} = cell;\n cell.unmerge();\n cell.style = style;\n }\n }\n delete this._merges[colCache.encodeAddress(merge.top, merge.left)];\n });\n\n if (inserts.length > 0) {\n // must iterate over all rows whether they exist yet or not\n for (let i = 0; i < nRows; i++) {\n const rowArguments = [start, count];\n // eslint-disable-next-line no-loop-func\n inserts.forEach(insert => {\n rowArguments.push(insert[i] || null);\n });\n const row = this.getRow(i + 1);\n // eslint-disable-next-line prefer-spread\n row.splice.apply(row, rowArguments);\n }\n } else {\n // nothing to insert, so just splice all rows\n this._rows.forEach(r => {\n if (r) {\n r.splice(start, count);\n }\n });\n }\n\n // splice column definitions\n const nExpand = inserts.length - count;\n const nKeep = start + count;\n const nEnd = this._columns.length;\n if (nExpand < 0) {\n for (let i = start + inserts.length; i <= nEnd; i++) {\n this.getColumn(i).defn = this.getColumn(i - nExpand).defn;\n }\n } else if (nExpand > 0) {\n for (let i = nEnd; i >= nKeep; i--) {\n this.getColumn(i + nExpand).defn = this.getColumn(i).defn;\n }\n }\n for (let i = start; i < start + inserts.length; i++) {\n this.getColumn(i).defn = null;\n }\n\n // re-merge the merges that were unmerged above, shifted, shrunk or grown to match.\n // Inserted columns join a merge only when it continues on both sides of them.\n merges.forEach(merge => {\n let {left, right} = merge;\n if (left >= nKeep) {\n left += nExpand;\n } else if (left >= start) {\n left = start + inserts.length;\n }\n if (right >= nKeep) {\n right += nExpand;\n } else if (right >= start) {\n right = start - 1;\n }\n // drop merges whose columns were all deleted or that are down to a single cell\n if (left < right || (left === right && merge.top < merge.bottom)) {\n this.mergeCellsWithoutStyle(merge.top, left, merge.bottom, right);\n }\n });\n\n // account for defined names\n this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length);\n }\n\n get lastColumn() {\n return this.getColumn(this.columnCount);\n }\n\n get columnCount() {\n let maxCount = 0;\n this.eachRow(row => {\n maxCount = Math.max(maxCount, row.cellCount);\n });\n return maxCount;\n }\n\n get actualColumnCount() {\n // performance nightmare - for each row, counts all the columns used\n const counts = [];\n let count = 0;\n this.eachRow(row => {\n row.eachCell(({col}) => {\n if (!counts[col]) {\n counts[col] = true;\n count++;\n }\n });\n });\n return count;\n }\n\n // =========================================================================\n // Rows\n\n _commitRow() {\n // nop - allows streaming reader to fill a document\n }\n\n get _lastRowNumber() {\n // need to cope with results of splice\n const rows = this._rows;\n let n = rows.length;\n while (n > 0 && rows[n - 1] === undefined) {\n n--;\n }\n return n;\n }\n\n get _nextRow() {\n return this._lastRowNumber + 1;\n }\n\n get lastRow() {\n if (this._rows.length) {\n return this._rows[this._rows.length - 1];\n }\n return undefined;\n }\n\n // find a row (if exists) by row number\n findRow(r) {\n return this._rows[r - 1];\n }\n\n // find multiple rows (if exists) by row number\n findRows(start, length) {\n return this._rows.slice(start - 1, start - 1 + length);\n }\n\n get rowCount() {\n return this._lastRowNumber;\n }\n\n get actualRowCount() {\n // counts actual rows that have actual data\n let count = 0;\n this.eachRow(() => {\n count++;\n });\n return count;\n }\n\n // get a row by row number.\n getRow(r) {\n let row = this._rows[r - 1];\n if (!row) {\n row = this._rows[r - 1] = new Row(this, r);\n }\n return row;\n }\n\n // get multiple rows by row number.\n getRows(start, length) {\n if (length < 1) return undefined;\n const rows = [];\n for (let i = start; i < start + length; i++) {\n rows.push(this.getRow(i));\n }\n return rows;\n }\n\n addRow(value, style = 'n') {\n const rowNo = this._nextRow;\n const row = this.getRow(rowNo);\n row.values = value;\n this._setStyleOption(rowNo, style[0] === 'i' ? style : 'n');\n return row;\n }\n\n addRows(value, style = 'n') {\n const rows = [];\n value.forEach(row => {\n rows.push(this.addRow(row, style));\n });\n return rows;\n }\n\n insertRow(pos, value, style = 'n') {\n this.spliceRows(pos, 0, value);\n this._setStyleOption(pos, style);\n return this.getRow(pos);\n }\n\n insertRows(pos, values, style = 'n') {\n this.spliceRows(pos, 0, ...values);\n if (style !== 'n') {\n // copy over the styles\n for (let i = 0; i < values.length; i++) {\n if (style[0] === 'o' && this.findRow(values.length + pos + i) !== undefined) {\n this._copyStyle(values.length + pos + i, pos + i, style[1] === '+');\n } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {\n this._copyStyle(pos - 1, pos + i, style[1] === '+');\n }\n }\n }\n return this.getRows(pos, values.length);\n }\n\n // set row at position to same style as of either pervious row (option 'i') or next row (option 'o')\n _setStyleOption(pos, style = 'n') {\n if (style[0] === 'o' && this.findRow(pos + 1) !== undefined) {\n this._copyStyle(pos + 1, pos, style[1] === '+');\n } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) {\n this._copyStyle(pos - 1, pos, style[1] === '+');\n }\n }\n\n _copyStyle(src, dest, styleEmpty = false) {\n const rSrc = this.getRow(src);\n const rDst = this.getRow(dest);\n rDst.style = copyStyle(rSrc.style);\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: styleEmpty}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = copyStyle(cell.style);\n });\n rDst.height = rSrc.height;\n }\n\n duplicateRow(rowNum, count, insert = false) {\n // create count duplicates of rowNum\n // either inserting new or overwriting existing rows\n\n const rSrc = this._rows[rowNum - 1];\n const inserts = new Array(count).fill(rSrc.values);\n this.spliceRows(rowNum + 1, insert ? 0 : count, ...inserts);\n\n // now copy styles...\n for (let i = 0; i < count; i++) {\n const rDst = this._rows[rowNum + i];\n rDst.style = rSrc.style;\n rDst.height = rSrc.height;\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = cell.style;\n });\n }\n }\n\n spliceRows(start, count, ...inserts) {\n // same problem as row.splice, except worse.\n const nKeep = start + count;\n const nInserts = inserts.length;\n const nExpand = nInserts - count;\n const nEnd = this._rows.length;\n let i;\n let rSrc;\n if (nExpand < 0) {\n // remove rows by moving the rows below the splice up\n for (i = nKeep; i <= nEnd; i++) {\n rSrc = this._rows[i - 1];\n if (rSrc) {\n const rDst = this.getRow(i + nExpand);\n rDst.values = rSrc.values;\n rDst.style = rSrc.style;\n rDst.height = rSrc.height;\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = cell.style;\n });\n this._rows[i - 1] = undefined;\n } else {\n this._rows[i + nExpand - 1] = undefined;\n }\n }\n\n // The move above only overwrites rows up to (nEnd + nExpand). When there are\n // not enough rows below the splice, rows from there to (nKeep - 1) would be\n // left behind, so clear them (but not past the end of the sheet).\n const nFrom = Math.max(start + nInserts, nEnd + nExpand + 1);\n const nTo = Math.min(nKeep - 1, nEnd);\n for (i = nFrom; i <= nTo; i++) {\n this._rows[i - 1] = undefined;\n }\n } else if (nExpand > 0) {\n // insert new cells\n for (i = nEnd; i >= nKeep; i--) {\n rSrc = this._rows[i - 1];\n if (rSrc) {\n const rDst = this.getRow(i + nExpand);\n rDst.values = rSrc.values;\n rDst.style = rSrc.style;\n rDst.height = rSrc.height;\n // eslint-disable-next-line no-loop-func\n rSrc.eachCell({includeEmpty: true}, (cell, colNumber) => {\n rDst.getCell(colNumber).style = cell.style;\n\n // remerge cells accounting for insert offset\n if (cell._value.constructor.name === 'MergeValue') {\n const cellToBeMerged = this.getRow(cell._row._number + nInserts).getCell(colNumber);\n const prevMaster = cell._value._master;\n const newMaster = this.getRow(prevMaster._row._number + nInserts).getCell(prevMaster._column._number);\n cellToBeMerged.merge(newMaster);\n }\n });\n } else {\n this._rows[i + nExpand - 1] = undefined;\n }\n }\n }\n\n // now copy over the new values\n for (i = 0; i < nInserts; i++) {\n const rDst = this.getRow(start + i);\n rDst.style = {};\n rDst.values = inserts[i];\n }\n\n // account for defined names\n this.workbook.definedNames.spliceRows(this.name, start, count, nInserts);\n }\n\n // iterate over every row in the worksheet, including maybe empty rows\n eachRow(options, iteratee) {\n if (!iteratee) {\n iteratee = options;\n options = undefined;\n }\n if (options && options.includeEmpty) {\n const n = this._rows.length;\n for (let i = 1; i <= n; i++) {\n iteratee(this.getRow(i), i);\n }\n } else {\n this._rows.forEach(row => {\n if (row && row.hasValues) {\n iteratee(row, row.number);\n }\n });\n }\n }\n\n // return all rows as sparse array\n getSheetValues() {\n const rows = [];\n this._rows.forEach(row => {\n if (row) {\n rows[row.number] = row.values;\n }\n });\n return rows;\n }\n\n // =========================================================================\n // Cells\n\n // returns the cell at [r,c] or address given by r. If not found, return undefined\n findCell(r, c) {\n const address = colCache.getAddress(r, c);\n const row = this._rows[address.row - 1];\n return row ? row.findCell(address.col) : undefined;\n }\n\n // return the cell at [r,c] or address given by r. If not found, create a new one.\n getCell(r, c) {\n const address = colCache.getAddress(r, c);\n const row = this.getRow(address.row);\n return row.getCellEx(address);\n }\n\n // =========================================================================\n // Merge\n\n // convert the range defined by ['tl:br'], [tl,br] or [t,l,b,r] into a single 'merged' cell\n mergeCells(...cells) {\n const dimensions = new Range(cells);\n this._mergeCellsInternal(dimensions);\n }\n\n mergeCellsWithoutStyle(...cells) {\n const dimensions = new Range(cells);\n this._mergeCellsInternal(dimensions, true);\n }\n\n _mergeCellsInternal(dimensions, ignoreStyle) {\n // check cells aren't already merged\n _.each(this._merges, merge => {\n if (merge.intersects(dimensions)) {\n throw new Error('Cannot merge already merged cells');\n }\n });\n\n // apply merge\n const master = this.getCell(dimensions.top, dimensions.left);\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\n for (let j = dimensions.left; j <= dimensions.right; j++) {\n // merge all but the master cell\n if (i > dimensions.top || j > dimensions.left) {\n this.getCell(i, j).merge(master, ignoreStyle);\n }\n }\n }\n\n // index merge\n this._merges[master.address] = dimensions;\n }\n\n _unMergeMaster(master) {\n // master is always top left of a rectangle\n const merge = this._merges[master.address];\n if (merge) {\n for (let i = merge.top; i <= merge.bottom; i++) {\n for (let j = merge.left; j <= merge.right; j++) {\n this.getCell(i, j).unmerge();\n }\n }\n delete this._merges[master.address];\n }\n }\n\n get hasMerges() {\n // return true if this._merges has a merge object\n return _.some(this._merges, Boolean);\n }\n\n // scan the range defined by ['tl:br'], [tl,br] or [t,l,b,r] and if any cell is part of a merge,\n // un-merge the group. Note this function can affect multiple merges and merge-blocks are\n // atomic - either they're all merged or all un-merged.\n unMergeCells(...cells) {\n const dimensions = new Range(cells);\n\n // find any cells in that range and unmerge them\n for (let i = dimensions.top; i <= dimensions.bottom; i++) {\n for (let j = dimensions.left; j <= dimensions.right; j++) {\n const cell = this.findCell(i, j);\n if (cell) {\n if (cell.type === Enums.ValueType.Merge) {\n // this cell merges to another master\n this._unMergeMaster(cell.master);\n } else if (this._merges[cell.address]) {\n // this cell is a master\n this._unMergeMaster(cell);\n }\n }\n }\n }\n }\n\n // ===========================================================================\n // Shared/Array Formula\n fillFormula(range, formula, results, shareType = 'shared') {\n // Define formula for top-left cell and share to rest\n const decoded = colCache.decode(range);\n const {top, left, bottom, right} = decoded;\n const width = right - left + 1;\n const masterAddress = colCache.encodeAddress(top, left);\n const isShared = shareType === 'shared';\n\n // work out result accessor\n let getResult;\n if (typeof results === 'function') {\n getResult = results;\n } else if (Array.isArray(results)) {\n if (Array.isArray(results[0])) {\n getResult = (row, col) => results[row - top][col - left];\n } else {\n // eslint-disable-next-line no-mixed-operators\n getResult = (row, col) => results[(row - top) * width + (col - left)];\n }\n } else {\n getResult = () => undefined;\n }\n let first = true;\n for (let r = top; r <= bottom; r++) {\n for (let c = left; c <= right; c++) {\n if (first) {\n this.getCell(r, c).value = {\n shareType,\n formula,\n ref: range,\n result: getResult(r, c),\n };\n first = false;\n } else {\n this.getCell(r, c).value = isShared\n ? {\n sharedFormula: masterAddress,\n result: getResult(r, c),\n }\n : getResult(r, c);\n }\n }\n }\n }\n\n // =========================================================================\n // Images\n addImage(imageId, range) {\n const model = {\n type: 'image',\n imageId,\n range,\n };\n this._media.push(new Image(this, model));\n }\n\n getImages() {\n return this._media.filter(m => m.type === 'image');\n }\n\n addBackgroundImage(imageId) {\n const model = {\n type: 'background',\n imageId,\n };\n this._media.push(new Image(this, model));\n }\n\n getBackgroundImageId() {\n const image = this._media.find(m => m.type === 'background');\n return image && image.imageId;\n }\n\n // =========================================================================\n // Worksheet Protection\n protect(password, options) {\n // TODO: make this function truly async\n // perhaps marshal to worker thread or something\n return new Promise(resolve => {\n this.sheetProtection = {\n sheet: true,\n };\n if (options && 'spinCount' in options) {\n // force spinCount to be integer >= 0\n options.spinCount = Number.isFinite(options.spinCount) ? Math.round(Math.max(0, options.spinCount)) : 100000;\n }\n if (password) {\n this.sheetProtection.algorithmName = 'SHA-512';\n this.sheetProtection.saltValue = Encryptor.randomBytes(16).toString('base64');\n this.sheetProtection.spinCount = options && 'spinCount' in options ? options.spinCount : 100000; // allow user specified spinCount\n this.sheetProtection.hashValue = Encryptor.convertPasswordToHash(\n password,\n 'SHA512',\n this.sheetProtection.saltValue,\n this.sheetProtection.spinCount\n );\n }\n if (options) {\n this.sheetProtection = Object.assign(this.sheetProtection, options);\n if (!password && 'spinCount' in options) {\n delete this.sheetProtection.spinCount;\n }\n }\n resolve();\n });\n }\n\n unprotect() {\n this.sheetProtection = null;\n }\n\n // =========================================================================\n // Tables\n addTable(model) {\n const table = new Table(this, model);\n this.tables[model.name] = table;\n return table;\n }\n\n getTable(name) {\n return this.tables[name];\n }\n\n removeTable(name) {\n delete this.tables[name];\n }\n\n getTables() {\n return Object.values(this.tables);\n }\n\n // =========================================================================\n // Pivot Tables\n addPivotTable(model) {\n // eslint-disable-next-line no-console\n console.warn(\n `Warning: Pivot Table support is experimental. \nPlease leave feedback at https://github.com/exceljs/exceljs/discussions/2575`\n );\n\n const pivotTable = makePivotTable(this, model);\n\n this.pivotTables.push(pivotTable);\n this.workbook.pivotTables.push(pivotTable);\n\n return pivotTable;\n }\n\n // ===========================================================================\n // Conditional Formatting\n addConditionalFormatting(cf) {\n this.conditionalFormattings.push(cf);\n }\n\n removeConditionalFormatting(filter) {\n if (typeof filter === 'number') {\n this.conditionalFormattings.splice(filter, 1);\n } else if (filter instanceof Function) {\n this.conditionalFormattings = this.conditionalFormattings.filter(filter);\n } else {\n this.conditionalFormattings = [];\n }\n }\n\n // ===========================================================================\n // Deprecated\n get tabColor() {\n // eslint-disable-next-line no-console\n console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');\n return this.properties.tabColor;\n }\n\n set tabColor(value) {\n // eslint-disable-next-line no-console\n console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor');\n this.properties.tabColor = value;\n }\n\n // ===========================================================================\n // Model\n\n get model() {\n const model = {\n id: this.id,\n name: this.name,\n dataValidations: this.dataValidations.model,\n properties: this.properties,\n state: this.state,\n pageSetup: this.pageSetup,\n headerFooter: this.headerFooter,\n rowBreaks: this.rowBreaks,\n views: this.views,\n autoFilter: this.autoFilter,\n media: this._media.map(medium => medium.model),\n sheetProtection: this.sheetProtection,\n tables: Object.values(this.tables).map(table => table.model),\n pivotTables: this.pivotTables,\n conditionalFormattings: this.conditionalFormattings,\n };\n\n // =================================================\n // columns\n model.cols = Column.toModel(this.columns);\n\n // ==========================================================\n // Rows\n const rows = (model.rows = []);\n const dimensions = (model.dimensions = new Range());\n this._rows.forEach(row => {\n const rowModel = row && row.model;\n if (rowModel) {\n dimensions.expand(rowModel.number, rowModel.min, rowModel.number, rowModel.max);\n rows.push(rowModel);\n }\n });\n\n // ==========================================================\n // Merges\n model.merges = [];\n _.each(this._merges, merge => {\n model.merges.push(merge.range);\n });\n\n return model;\n }\n\n _parseRows(model) {\n this._rows = [];\n model.rows.forEach(rowModel => {\n const row = new Row(this, rowModel.number);\n this._rows[row.number - 1] = row;\n row.model = rowModel;\n });\n }\n\n _parseMergeCells(model) {\n _.each(model.mergeCells, merge => {\n // Do not merge styles when importing an Excel file\n // since each cell may have different styles intentionally.\n this.mergeCellsWithoutStyle(merge);\n });\n }\n\n set model(value) {\n this.name = value.name;\n this._columns = Column.fromModel(this, value.cols);\n this._parseRows(value);\n\n this._parseMergeCells(value);\n this.dataValidations = new DataValidations(value.dataValidations);\n this.properties = value.properties;\n this.pageSetup = value.pageSetup;\n this.headerFooter = value.headerFooter;\n this.views = value.views;\n this.autoFilter = value.autoFilter;\n this._media = value.media.map(medium => new Image(this, medium));\n this.sheetProtection = value.sheetProtection;\n this.tables = value.tables.reduce((tables, table) => {\n const t = new Table();\n t.model = table;\n tables[table.name] = t;\n return tables;\n }, {});\n this.pivotTables = value.pivotTables;\n this.conditionalFormattings = value.conditionalFormattings;\n }\n}\n\nmodule.exports = Worksheet;\n"],"mappings":"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","ignoreList":[]}
@@ -478,10 +478,9 @@ class WorkSheetXform extends BaseXform {
478
478
  model.media = [];
479
479
  if (model.drawing) {
480
480
  const drawingRel = rels[model.drawing.rId];
481
- const match = drawingRel.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);
482
- if (match) {
483
- const drawingName = match[1];
484
- const drawing = options.drawings[drawingName];
481
+ const match = drawingRel && drawingRel.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);
482
+ const drawing = match && options.drawings[match[1]];
483
+ if (drawing) {
485
484
  drawing.anchors.forEach(anchor => {
486
485
  if (anchor.medium) {
487
486
  const image = {