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
Updated by Martin Meier over 10 years ago · 9 revisions