Ich versuche, eine feste Spalten-/Zellenbreite für meine exportierten Excel-Dateien mit js-xlsx festzulegen.
BEARBEITEN:
Hier ist die Quelle von js-xlsx: https://github.com/SheetJS/js-xlsx
Ich habe einen Schnipsel beim Schreibtest gefunden https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js#L14-L19
Für eine schnelle Referenz steht ws für Ihr Arbeitsblatt.
var wscols = [
{wch:6},
{wch:7},
{wch:10},
{wch:20}
];
ws['!cols'] = wscols;
Wenn Sie die Frage erweitern und die automatische Breitenbasis für Ihren Inhalt festlegen müssen, können Sie Folgendes schreiben:
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)) }));
}
Diese Funktion setzt voraus, dass Ihre erste Zeile die meisten Spalten enthält. Anschließend wird versucht, die breiteste Zelle in jeder Spalte zu finden, indem die Länge der Inhaltszeichen berechnet wird.
Ähnlich wie bei der Zellenbreite können Sie die Zellenhöhe auf folgende Weise einstellen
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
Hinweis:Wenn Ihre Arbeitsblattdaten automatisch generiert werden und Sie nicht wissen, wie viele Zeilen und Spalten gefüllt werden, können Sie auf folgende Weise die Anzahl der Zeilen und Spalten im Arbeitsblatt ermitteln Formatieren der Breite/Höhe der Zelle.
var range = XLSX.utils.decode_range(ws['!ref']);
var noRows = range.e.r; // No.of rows
var noCols = range.e.c; // No. of cols