Как установить ширину ячеек при экспорте файлов .xlsx с помощью js-xlsx

Я пытаюсь установить фиксированную ширину столбца/ячейки для экспортированных файлов excel с помощью js-xlsx.

EDIT:

Вот источник js-xlsx: https://github.com/SheetJS/js-xlsx

Data View

Ответ 2

Подобно ширине ячейки, вы можете установить высоту ячейки следующим образом

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

Ответ 3

Расширяя вопрос, если вам нужно установить автоматическую ширину базы для вашего контента, вы можете написать следующее:

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)) }));
}

Эта функция предполагает, что ваша первая строка содержит большинство столбцов. Затем он пытается найти самую широкую ячейку в каждом столбце, вычисляя длину символа содержимого.