helpers.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.isCellDescriptor = exports.isObject = exports.isString = exports.isNumber = exports.isBoolean = exports.buildSheetFromMatrix = undefined;
  6. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  7. var _xlsx = require('xlsx');
  8. var _xlsx2 = _interopRequireDefault(_xlsx);
  9. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  10. var isBoolean = function isBoolean(maybeBoolean) {
  11. return typeof maybeBoolean === 'boolean';
  12. };
  13. var isNumber = function isNumber(maybeNumber) {
  14. return typeof maybeNumber === 'number';
  15. };
  16. var isString = function isString(maybeString) {
  17. return typeof maybeString === 'string';
  18. };
  19. var isObject = function isObject(maybeObject) {
  20. return maybeObject !== null && (typeof maybeObject === 'undefined' ? 'undefined' : _typeof(maybeObject)) === 'object';
  21. };
  22. var isCellDescriptor = function isCellDescriptor(maybeCell) {
  23. return isObject(maybeCell) && 'v' in maybeCell;
  24. };
  25. var originDate = new Date(Date.UTC(1899, 11, 30));
  26. var buildExcelDate = function buildExcelDate(value, is1904) {
  27. var epoch = Date.parse(value + (is1904 ? 1462 : 0));
  28. return (epoch - originDate) / 864e5;
  29. };
  30. var buildSheetFromMatrix = function buildSheetFromMatrix(data) {
  31. var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  32. var workSheet = {};
  33. var range = { s: { c: 1e7, r: 1e7 }, e: { c: 0, r: 0 } };
  34. if (!Array.isArray(data)) throw new Error('sheet data is not array');
  35. for (var R = 0; R !== data.length; R += 1) {
  36. for (var C = 0; C !== data[R].length; C += 1) {
  37. if (!Array.isArray(data[R])) throw new Error(R + 'th row data is not array');
  38. if (range.s.r > R) range.s.r = R;
  39. if (range.s.c > C) range.s.c = C;
  40. if (range.e.r < R) range.e.r = R;
  41. if (range.e.c < C) range.e.c = C;
  42. if (data[R][C] === null) {
  43. continue; // eslint-disable-line
  44. }
  45. var cell = isCellDescriptor(data[R][C]) ? data[R][C] : { v: data[R][C] };
  46. var cellRef = _xlsx2.default.utils.encode_cell({ c: C, r: R });
  47. if (isNumber(cell.v)) {
  48. cell.t = 'n';
  49. } else if (isBoolean(cell.v)) {
  50. cell.t = 'b';
  51. } else if (cell.v instanceof Date) {
  52. cell.t = 'n';
  53. cell.v = buildExcelDate(cell.v);
  54. cell.z = cell.z || _xlsx2.default.SSF._table[14]; // eslint-disable-line no-underscore-dangle
  55. } else {
  56. cell.t = 's';
  57. }
  58. if (isNumber(cell.z)) cell.z = _xlsx2.default.SSF._table[cell.z]; // eslint-disable-line no-underscore-dangle
  59. workSheet[cellRef] = cell;
  60. }
  61. }
  62. if (range.s.c < 1e7) {
  63. workSheet['!ref'] = _xlsx2.default.utils.encode_range(range);
  64. }
  65. if (options['!cols']) {
  66. workSheet['!cols'] = options['!cols'];
  67. }
  68. if (options['!merges']) {
  69. workSheet['!merges'] = options['!merges'];
  70. }
  71. return workSheet;
  72. };
  73. exports.buildSheetFromMatrix = buildSheetFromMatrix;
  74. exports.isBoolean = isBoolean;
  75. exports.isNumber = isNumber;
  76. exports.isString = isString;
  77. exports.isObject = isObject;
  78. exports.isCellDescriptor = isCellDescriptor;
  79. //# sourceMappingURL=helpers.js.map