Spaltenbreite mit Office Scripts in Excel richtig einstellen

Kleines Detail, großer Ärger. Wer in Office Script zum ersten Mal eine Spaltenbreite für Excel setzt, stolpert früher oder später über dasselbe Problem. Man tippt einen Wert ein, der aus Excel vertraut aussieht, führt das Script aus und die Spalte auf dem Bildschirm hat plötzlich überhaupt nichts mehr mit dem gewohnten Bild zu tun. Zu breit, zu schmal, in jedem Fall falsch.

Der Grund dafür ist gut versteckt, aber sobald man ihn kennt, ist er in fünf Minuten erledigt.

Zwei Maßeinheiten, ein Missverständnis

Excel zeigt Spaltenbreiten in seiner eigenen, historisch gewachsenen Einheit an. Excel verwendet für die Spaltenbreite eine eigene Einheit, die auf der Anzahl der Zeichen in der Standardschriftart basiert, während die Zeilenhöhe in Punkt (pt) angegeben wird.

Office Script rechnet dagegen komplett anders. Die Methode setColumnWidth() erwartet ihren Wert in Pixeln. Nicht in der Excel-Einheit, sondern in der Bildschirmgröße, mit der auch CSS oder klassisches Webdesign arbeitet.

Setzt man also im Script eine Breite von 6, weil man aus Excel eine Spaltenbreite von 6 gewohnt ist, bekommt man am Ende eine Spalte, die 6 Pixel breit ist. Das ist ungefähr so breit wie ein einzelner Buchstabe. Auf den ersten Blick wirkt das Ergebnis dann einfach kaputt, ohne dass eine Fehlermeldung irgendwo einen Hinweis gibt, woran es liegt.

Der Umrechnungsfaktor

Nach etwas Recherche und Vergleichen zwischen Excel-Anzeige und Pixelwert hat sich ein Faktor von ungefähr 5,6 herauskristallisiert, mit dem sich die gewohnten Excel-Breiten ziemlich gut reproduzieren lässt.

const faktor = 5.6;

// gewohnte Excel-Breite mal Faktor ergibt den Pixelwert für OfficeScript
sheet.getRange("A:A").getFormat().setColumnWidth(20 * faktor); 

Eine Spalte, die in Excel mit der Breite 20 vertraut aussieht, bekommt im Script also den Wert 20 mal 5,6, also 112 Pixel. Wichtig dabei ist, dass dieser Faktor eine Annäherung ist und keine mathematisch exakte Konstante. Für die allermeisten praktischen Fälle, in denen es um “sieht wieder so aus wie gewohnt” geht, reicht das völlig aus.

Wo dieser Kniff sonst noch weiterhilft

Diese Umrechnung ist überall relevant, wo ein Office Script eine Tabelle nicht nur mit Daten befüllen, sondern auch optisch so aufbereiten soll, dass sie sich wie eine ganz normale, von Hand formatierte Excel-Datei anfühlt. Reports, automatisch erzeugte Auswertungen, Exporte für Kolleginnen und Kollegen, die die Datei ganz normal in Excel öffnen.

Martin Reichelt ist Spezialist für Microsoft-Automatisierung und Verfechter der Citizen Developer Bewegung. Bei XelUp zeigt er, wie man das volle Potenzial von Excel ausschöpft und durch Power Automate effiziente Cloud-Workflows schafft, um wertvolle Lebenszeit im Job zurückzugewinnen.