node-xlsx
Version:
NodeJS Excel files parser & builder
69 lines (68 loc) • 3.1 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.build = exports.parseMetadata = exports.parse = void 0;
const xlsx_1 = __importStar(require("xlsx"));
const helpers_1 = require("./helpers");
const workbook_1 = require("./workbook");
const parse = (mixed, options = {}) => {
const { dateNF, header = 1, range, blankrows, defval, raw = true, rawNumbers, ...otherOptions } = options;
const workBook = (0, helpers_1.isString)(mixed)
? xlsx_1.default.readFile(mixed, { dateNF, raw, ...otherOptions })
: xlsx_1.default.read(mixed, { dateNF, raw, ...otherOptions });
return Object.keys(workBook.Sheets).map((name) => {
const sheet = workBook.Sheets[name];
return {
name,
data: xlsx_1.default.utils.sheet_to_json(sheet, {
dateNF,
header,
range,
blankrows,
defval,
raw,
rawNumbers,
}),
};
});
};
exports.parse = parse;
const parseMetadata = (mixed, options = {}) => {
const workBook = (0, helpers_1.isString)(mixed) ? xlsx_1.default.readFile(mixed, options) : xlsx_1.default.read(mixed, options);
return Object.keys(workBook.Sheets).map((name) => {
const sheet = workBook.Sheets[name];
return { name, data: sheet['!ref'] ? xlsx_1.default.utils.decode_range(sheet['!ref']) : null };
});
};
exports.parseMetadata = parseMetadata;
const build = (worksheets, options = {}) => {
const { bookType = 'xlsx', bookSST = false, type = 'buffer', sheetOptions = {}, ...otherOptions } = options;
const workBook = worksheets.reduce((soFar, { name, data, options = {} }, index) => {
const sheetName = name || `Sheet_${index}`;
const sheetData = xlsx_1.utils.aoa_to_sheet(data, { ...sheetOptions, ...options });
soFar.SheetNames.push(sheetName);
soFar.Sheets[sheetName] = sheetData;
return soFar;
}, new workbook_1.WorkBook());
return xlsx_1.default.write(workBook, { bookType, bookSST, type, ...otherOptions });
};
exports.build = build;
exports.default = { parse: exports.parse, parseMetadata: exports.parseMetadata, build: exports.build };