You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

89 lines
2.2 KiB

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.argb = exports.mergeCells = exports.cellPosition = exports.columnIndex = exports.saveAsExcel = undefined;
var _constants = require('./constants');
var _fileSaver = require('file-saver');
var saveAsExcel = exports.saveAsExcel = function saveAsExcel(workbook) {
var filename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'table';
var ext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'xlsx';
var type = _constants.MIME_TYPES[ext];
if (!type) {
console.error(ext + ' file extension is not supported');
return;
}
workbook.xlsx.writeBuffer().then(function (uint8) {
(0, _fileSaver.saveAs)(new Blob([uint8.buffer], { type: type }), filename + '.' + ext);
});
};
var letter = function letter(num) {
var a = 'A'.charCodeAt(0);
return String.fromCharCode(a + num - 1);
};
/**
* 0 => A
* 25 => Z
* 26 => AA
*/
var columnIndex = exports.columnIndex = function columnIndex(num) {
var result = void 0;
num = num + 1;
if (num <= 26) {
result = letter(num);
} else {
var mod = num % 26;
var quotient = Math.floor(num / 26);
if (mod === 0) {
result = letter(quotient - 1) + letter(26);
} else {
result = letter(quotient) + letter(mod);
}
}
return result;
};
// x = 0, y = 0 => 'A1'
// x = 0, y = 1 => 'A2'
// x = 1, y = 0 => 'B1'
var cellPosition = exports.cellPosition = function cellPosition(x, y) {
return '' + columnIndex(x) + (y + 1);
};
var mergeCells = exports.mergeCells = function mergeCells(sheet, x1, y1, x2, y2) {
var fromCell = cellPosition(x1, y1);
var toCell = cellPosition(x2, y2);
sheet.mergeCells(fromCell, toCell);
return sheet.getCell(fromCell);
};
/**
* convert rgb(0,0,0) rgba(0,0,0,0) to argb: FF00FF00
*/
var argb = exports.argb = function argb(color) {
var values = color.split('(')[1].split(')')[0].split(',').map(function (v, i) {
return i === 3 ? v * 255 : v;
});
if (values.length === 3) {
values.push(255);
}
values.unshift(values.pop());
return values.map(function (v) {
var s = parseInt(v).toString(16);
return s.length === 1 ? '0' + s : s;
}).join('').toUpperCase();
};