Я пытаюсь установить фиксированную ширину столбца/ячейки для экспортированных файлов excel с помощью js-xlsx.
EDIT:
Вот источник js-xlsx: https://github.com/SheetJS/js-xlsx
Я пытаюсь установить фиксированную ширину столбца/ячейки для экспортированных файлов excel с помощью js-xlsx.
EDIT:
Вот источник js-xlsx: https://github.com/SheetJS/js-xlsx
Я нашел фрагмент теста записи здесь https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js#L14-L19
Для быстрой справки, где ws - ваш рабочий лист.
var wscols = [
{wch:6},
{wch:7},
{wch:10},
{wch:20}
];
ws['!cols'] = wscols;
Подобно ширине ячейки, вы можете установить высоту ячейки следующим образом
var wsrows = [
{hpt: 12}, // row 1 sets to the height of 12 in points
{hpx: 16}, // row 2 sets to the height of 16 in pixels
];
ws['!rows'] = wsrows; // ws - worksheet
Подсказка: если данные вашего рабочего листа генерируются автоматически и вы не знаете, сколько строк и столбцов заполнено, вы можете использовать следующий способ, чтобы найти количество строк и столбцов в рабочем листе для форматирования ширины/высоты ячейки.
var range = XLSX.utils.decode_range(ws['!ref']);
var noRows = range.e.r; // No.of rows
var noCols = range.e.c; // No. of cols
Расширяя вопрос, если вам нужно установить автоматическую ширину базы для вашего контента, вы можете написать следующее:
const worksheet = XLSX.utils.aoa_to_sheet(arrayOfArray);
worksheet['!cols'] = fitToColumn(arrayOfArray);
function fitToColumn(arrayOfArray) {
// get maximum character of each column
return arrayOfArray[0].map((a, i) => ({ wch: Math.max(...arrayOfArray.map(a2 => a2[i].toString().length)) }));
}
Эта функция предполагает, что ваша первая строка содержит большинство столбцов. Затем он пытается найти самую широкую ячейку в каждом столбце, вычисляя длину символа содержимого.