web-dev-qa-db-de.com

Festlegen der Zellenbreite beim Export von .xlsx-Dateien mit js-xlsx

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

Data View

20
jgabrielfaria

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;
52
ShermanL

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.

1
Icycool

Ä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
1
SridharKritha