Projekt

Allgemein

Profil

Aktionen

Spreadsheet HowTo

Das Gem Spreadsheet ist extrem spärlich dokumentiert.
Viele Details habe ich auf http://stackoverflow.com gesammelt. Vielen Dank der Community. Ich versuche hier mal zusammen zu fassen.

Google Gruppe

Nachdem die Dokumentation von spreadsheet.ch immer wieder auf das inzwischen geschlossene rubyforge.org verweist, ist eine verbeleibende Quelle von Informationen die Google-Gruppe:

https://groups.google.com/forum/#!forum/rubyspreadsheet

Addressiern von Zellen

Der Einstieg ist in https://github.com/zdavatz/spreadsheet/blob/master/GUIDE.md beschrieben.

Workbooks (nur die verwende ich) sind hierarchisch aufgebaut.

Sheets, Rows und Cells werden in der Regel über ihren 0-basierten Index angesprochen.
Cells können an eine bestende Row angehängt werden:

row.push cell

Formatieren

Zellen können formatiert werden, indem ihnen ein Spreadsheet::Format zugewiesen wird.
Das Format kann auch inkrementell geändert werden mit update_format. Dabei wird kein Format übergeben, sondern ein Hash mit Attributen:

nb_format = Spreadsheet::Format.new number_format: '#,##0.00'
aqua = Spreadsheet::Format.new pattern_fg_color: :xls_color_20, weight: :bold
row = book.sheet(0)[1]
row.set_format(1,nb_format)
row.update_format(1,weight: :bold)

Zu Background-Farben siehe http://dmcritchie.mvps.org/excel/colors.htm,
wobei zu beachten ist, dass Ruby die Farben ab 0 und nicht ab 1 zählt, also immer eins abziehen :-)

Spalten

Spalten weren mit colunn angesprochen, können ein default-Format und eine Breite haben.
Die Breite der Spalten wird in "Anzahl an 0-Zeichen im Standard Font" angegeben, Dezimalwerte sind erlaubt:

nb_format = Spreadsheet::Format.new(number_format: '#,##0.00') # deutsches Excel tauscht . und , aus
sheet.column(1).default_format = nb_format
sheet.column(1).width = 15

Verbinden von Zellen (cell merge)

sheet.merge_cells(start_row, start_col, end_row, end_col)

Danke an http://stackoverflow.com/a/11603384/1065703

Von Martin Meier vor fast 10 Jahren aktualisiert · 9 Revisionen