This commit is contained in:
walkpan
2024-08-18 23:38:55 +08:00
parent e8dbb9bab3
commit 8f57f57c1d
1004 changed files with 234067 additions and 16087 deletions

View File

@@ -0,0 +1,142 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.buildSheetFromMatrix = exports.buildExcelDate = exports.isCellDescriptor = exports.isObject = exports.isString = exports.isNumber = exports.isBoolean = void 0;
var _xlsx = _interopRequireDefault(require("xlsx"));
var ORIGIN_DATE = new Date(Date.UTC(1899, 11, 30));
var isBoolean = function isBoolean(maybeBoolean) {
return typeof maybeBoolean === 'boolean';
};
exports.isBoolean = isBoolean;
var isNumber = function isNumber(maybeNumber) {
return typeof maybeNumber === 'number';
};
exports.isNumber = isNumber;
var isString = function isString(maybeString) {
return typeof maybeString === 'string';
};
exports.isString = isString;
var isObject = function isObject(maybeObject) {
return maybeObject !== null && typeof maybeObject === 'object';
};
exports.isObject = isObject;
var isCellDescriptor = function isCellDescriptor(maybeCell) {
return isObject(maybeCell) && 'v' in maybeCell;
};
exports.isCellDescriptor = isCellDescriptor;
var buildExcelDate = function buildExcelDate(value, is1904) {
var epoch = Date.parse(value + (is1904 ? 1462 : 0));
return (epoch - ORIGIN_DATE) / 864e5;
};
exports.buildExcelDate = buildExcelDate;
var buildSheetFromMatrix = function buildSheetFromMatrix(data, options) {
if (options === void 0) {
options = {};
}
var workSheet = {};
var range = {
s: {
c: 1e7,
r: 1e7
},
e: {
c: 0,
r: 0
}
};
if (!Array.isArray(data)) throw new Error('sheet data is not array');
for (var R = 0; R !== data.length; R += 1) {
for (var C = 0; C !== data[R].length; C += 1) {
if (!Array.isArray(data[R])) throw new Error(`${R}th row data is not array`);
if (range.s.r > R) range.s.r = R;
if (range.s.c > C) range.s.c = C;
if (range.e.r < R) range.e.r = R;
if (range.e.c < C) range.e.c = C;
if (data[R][C] === null) {
continue; // eslint-disable-line
}
var cell = isCellDescriptor(data[R][C]) ? data[R][C] : {
v: data[R][C]
};
var cellRef = _xlsx.default.utils.encode_cell({
c: C,
r: R
});
if (isNumber(cell.v)) {
cell.t = 'n';
} else if (isBoolean(cell.v)) {
cell.t = 'b';
} else if (cell.v instanceof Date) {
cell.t = 'n';
cell.v = buildExcelDate(cell.v);
cell.z = cell.z || _xlsx.default.SSF._table[14]; // eslint-disable-line no-underscore-dangle
/* eslint-disable spaced-comment, no-trailing-spaces */
/***
* Allows for an non-abstracted representation of the data
*
* example: {t:'n', z:10, f:'=AVERAGE(A:A)'}
*
* Documentation:
* - Cell Object: https://sheetjs.gitbooks.io/docs/#cell-object
* - Data Types: https://sheetjs.gitbooks.io/docs/#data-types
* - Format: https://sheetjs.gitbooks.io/docs/#number-formats
**/
/* eslint-disable spaced-comment, no-trailing-spaces */
} else if (isObject(cell.v)) {
cell.t = cell.v.t;
cell.f = cell.v.f;
cell.F = cell.v.F;
cell.z = cell.v.z;
} else {
cell.t = 's';
}
if (isNumber(cell.z)) cell.z = _xlsx.default.SSF._table[cell.z]; // eslint-disable-line no-underscore-dangle
workSheet[cellRef] = cell;
}
}
if (range.s.c < 1e7) {
workSheet['!ref'] = _xlsx.default.utils.encode_range(range);
}
if (options['!cols']) {
workSheet['!cols'] = options['!cols'];
}
if (options['!merges']) {
workSheet['!merges'] = options['!merges'];
}
return workSheet;
};
exports.buildSheetFromMatrix = buildSheetFromMatrix;
//# sourceMappingURL=helpers.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,89 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = exports.build = exports.parseMetadata = exports.parse = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _xlsx = _interopRequireDefault(require("xlsx"));
var _bufferFrom = _interopRequireDefault(require("buffer-from"));
var _helpers = require("./helpers");
var _workbook = _interopRequireDefault(require("./workbook"));
var parse = function parse(mixed, options) {
if (options === void 0) {
options = {};
}
var workSheet = _xlsx.default[(0, _helpers.isString)(mixed) ? 'readFile' : 'read'](mixed, options);
return Object.keys(workSheet.Sheets).map(function (name) {
var sheet = workSheet.Sheets[name];
return {
name,
data: _xlsx.default.utils.sheet_to_json(sheet, {
header: 1,
raw: options.raw !== false,
range: options.range ? options.range[name] : null
})
};
});
};
exports.parse = parse;
var parseMetadata = function parseMetadata(mixed, options) {
if (options === void 0) {
options = {};
}
var workSheet = _xlsx.default[(0, _helpers.isString)(mixed) ? 'readFile' : 'read'](mixed, options);
return Object.keys(workSheet.Sheets).map(function (name) {
var sheet = workSheet.Sheets[name];
return {
name,
data: sheet["!ref"] ? _xlsx.default.utils.decode_range(sheet["!ref"]) : null
};
});
};
exports.parseMetadata = parseMetadata;
var build = function build(worksheets, options) {
if (options === void 0) {
options = {};
}
var defaults = {
bookType: 'xlsx',
bookSST: false,
type: 'binary'
};
var workBook = new _workbook.default();
worksheets.forEach(function (worksheet) {
var sheetName = worksheet.name || 'Sheet';
var sheetOptions = worksheet.options || {};
var sheetData = (0, _helpers.buildSheetFromMatrix)(worksheet.data || [], (0, _extends2.default)({}, options, sheetOptions));
workBook.SheetNames.push(sheetName);
workBook.Sheets[sheetName] = sheetData;
});
var excelData = _xlsx.default.write(workBook, (0, _extends2.default)({}, defaults, options));
return excelData instanceof Buffer ? excelData : (0, _bufferFrom.default)(excelData, 'binary');
};
exports.build = build;
var _default = {
parse,
parseMetadata,
build
};
exports.default = _default;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/index.js"],"names":["parse","mixed","options","workSheet","XLSX","Object","keys","Sheets","map","name","sheet","data","utils","sheet_to_json","header","raw","range","parseMetadata","decode_range","build","worksheets","defaults","bookType","bookSST","type","workBook","Workbook","forEach","worksheet","sheetName","sheetOptions","sheetData","SheetNames","push","excelData","write","Buffer"],"mappings":"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","sourcesContent":["import XLSX from 'xlsx';\nimport bufferFrom from 'buffer-from';\nimport {buildSheetFromMatrix, isString} from './helpers';\nimport Workbook from './workbook';\n\nexport const parse = (mixed, options = {}) => {\n const workSheet = XLSX[isString(mixed) ? 'readFile' : 'read'](mixed, options);\n return Object.keys(workSheet.Sheets).map((name) => {\n const sheet = workSheet.Sheets[name];\n return {name, data: XLSX.utils.sheet_to_json(sheet, {header: 1, raw: options.raw !== false\n , range: options.range ? options.range[name] : null})};\n });\n};\n\nexport const parseMetadata = (mixed, options = {}) => {\n const workSheet = XLSX[isString(mixed) ? 'readFile' : 'read'](mixed, options);\n return Object.keys(workSheet.Sheets).map((name) => {\n const sheet = workSheet.Sheets[name];\n return {name, data: sheet[\"!ref\"] ? XLSX.utils.decode_range(sheet[\"!ref\"]) : null };\n });\n};\n\nexport const build = (worksheets, options = {}) => {\n const defaults = {\n bookType: 'xlsx',\n bookSST: false,\n type: 'binary'\n };\n const workBook = new Workbook();\n worksheets.forEach((worksheet) => {\n const sheetName = worksheet.name || 'Sheet';\n const sheetOptions = worksheet.options || {};\n const sheetData = buildSheetFromMatrix(worksheet.data || [], {...options, ...sheetOptions});\n workBook.SheetNames.push(sheetName);\n workBook.Sheets[sheetName] = sheetData;\n });\n const excelData = XLSX.write(workBook, {...defaults, ...options});\n return excelData instanceof Buffer ? excelData : bufferFrom(excelData, 'binary');\n};\n\nexport default {parse, parseMetadata, build};\n"],"file":"index.js"}

View File

@@ -0,0 +1,16 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var Workbook = function Workbook() {
(0, _defineProperty2.default)(this, "SheetNames", []);
(0, _defineProperty2.default)(this, "Sheets", {});
};
exports.default = Workbook;
//# sourceMappingURL=workbook.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../src/workbook.js"],"names":["Workbook"],"mappings":";;;;;;;;;IAAqBA,Q;oDACN,E;gDAEJ,E","sourcesContent":["export default class Workbook {\n SheetNames = [];\n\n Sheets = {};\n}\n"],"file":"workbook.js"}