60 lines
2.8 KiB
JavaScript
60 lines
2.8 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.build = exports.parseMetadata = exports.parse = void 0;
|
|
const xlsx_1 = require("xlsx");
|
|
const helpers_1 = require("./helpers");
|
|
const workbook_1 = require("./workbook");
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
const parse = (mixed, options = {}) => {
|
|
const { dateNF, header = 1, range, blankrows, defval, raw = true, rawNumbers, ...otherOptions } = options;
|
|
const workBook = (0, helpers_1.isString)(mixed)
|
|
? (0, xlsx_1.readFile)(mixed, { dateNF, raw, ...otherOptions })
|
|
: (0, xlsx_1.read)(mixed, { dateNF, raw, ...otherOptions });
|
|
return Object.keys(workBook.Sheets).map((name) => {
|
|
const sheet = workBook.Sheets[name];
|
|
return {
|
|
name,
|
|
data: xlsx_1.utils.sheet_to_json(sheet, {
|
|
dateNF,
|
|
header,
|
|
range: typeof range === 'function' ? range(sheet) : range,
|
|
blankrows,
|
|
defval,
|
|
raw,
|
|
rawNumbers,
|
|
}),
|
|
};
|
|
});
|
|
};
|
|
exports.parse = parse;
|
|
const parseMetadata = (mixed, options = {}) => {
|
|
const workBook = (0, helpers_1.isString)(mixed) ? (0, xlsx_1.readFile)(mixed, options) : (0, xlsx_1.read)(mixed, options);
|
|
return Object.keys(workBook.Sheets).map((name) => {
|
|
const sheet = workBook.Sheets[name];
|
|
return { name, data: sheet['!ref'] ? xlsx_1.utils.decode_range(sheet['!ref']) : null };
|
|
});
|
|
};
|
|
exports.parseMetadata = parseMetadata;
|
|
const build = (worksheets, { parseOptions = {}, writeOptions = {}, sheetOptions = {}, ...otherOptions } = {}) => {
|
|
const { bookType = 'xlsx', bookSST = false, type = 'buffer', ...otherWriteOptions } = writeOptions;
|
|
const legacyOptions = Object.keys(otherOptions).filter((key) => {
|
|
if (['!cols', '!rows', '!merges', '!protect', '!autofilter'].includes(key)) {
|
|
console.debug(`Deprecated options['${key}'], please use options.sheetOptions['${key}'] instead.`);
|
|
return true;
|
|
}
|
|
console.debug(`Unknown options['${key}'], please use options.parseOptions / options.writeOptions`);
|
|
return false;
|
|
});
|
|
const workBook = worksheets.reduce((soFar, { name, data, options = {} }, index) => {
|
|
const sheetName = name || `Sheet_${index}`;
|
|
const sheetData = xlsx_1.utils.aoa_to_sheet(data, parseOptions);
|
|
soFar.SheetNames.push(sheetName);
|
|
soFar.Sheets[sheetName] = sheetData;
|
|
Object.assign(soFar.Sheets[sheetName], legacyOptions, sheetOptions, options);
|
|
return soFar;
|
|
}, new workbook_1.WorkBook());
|
|
return (0, xlsx_1.write)(workBook, { bookType, bookSST, type, ...otherWriteOptions });
|
|
};
|
|
exports.build = build;
|
|
exports.default = { parse: exports.parse, parseMetadata: exports.parseMetadata, build: exports.build };
|