Projekt

Allgemein

Profil

Spreadsheet » Historie » Version 8

Martin Meier, 26.06.2014 17:55

1 1 Martin Meier
h1. Spreadsheet HowTo
2
3
Das Gem *Spreadsheet* ist extrem spärlich dokumentiert.
4 2 Martin Meier
Viele Details habe ich auf http://stackoverflow.com gesammelt. Vielen Dank der Community. Ich versuche hier mal zusammen zu fassen.
5
6
h2. Google Gruppe
7
8
Nachdem die Dokumentation von spreadsheet.ch immer wieder auf das inzwischen geschlossene rubyforge.org verweist, ist eine verbeleibende Quelle von Informationen die Google-Gruppe:
9
10
https://groups.google.com/forum/#!forum/rubyspreadsheet
11
12
h2. Addressiern von Zellen
13
14
Der Einstieg ist in https://github.com/zdavatz/spreadsheet/blob/master/GUIDE.md beschrieben.
15
16 3 Martin Meier
Workbooks (nur die verwende ich) sind hierarchisch aufgebaut.
17 2 Martin Meier
18
Sheets, Rows und Cells werden in der Regel über ihren 0-basierten Index angesprochen.
19
Cells können an eine bestende Row angehängt werden:
20
21 7 Martin Meier
<pre><code class="ruby">
22 2 Martin Meier
row.push cell
23 7 Martin Meier
</code></pre>
24 1 Martin Meier
25 4 Martin Meier
h2. Formatieren
26
27 5 Martin Meier
Zellen können formatiert werden, indem ihnen ein _Spreadsheet::Format_ zugewiesen wird.
28 8 Martin Meier
Das Format kann auch inkrementell geändert werden mit _update_format_. Dabei mir kein Format übergeben, sondern ein Hash mit Attributen:
29 7 Martin Meier
<pre><code class="ruby">
30
nb_format = Spreadsheet::Format.new number_format: '#,##0.00'
31 5 Martin Meier
aqua = Spreadsheet::Format.new pattern_fg_color: :xls_color_20, weight: :bold
32 4 Martin Meier
row = book.sheet(0)[1]
33 1 Martin Meier
row.set_format(1,nb_format)
34 8 Martin Meier
row.update_format(1,weight: :bold)
35 7 Martin Meier
</code></pre>
36 5 Martin Meier
37 1 Martin Meier
Zu Background-Farben siehe http://dmcritchie.mvps.org/excel/colors.htm, 
38
wobei zu beachten ist, dass Ruby die Farben ab 0 und nicht ab 1 zählt, also immer eins abziehen :-)
39 8 Martin Meier
40
h3. Spalten
41
42
Spalten weren mit colunn angesprochen, können ein default-Format und eine Breite haben:
43
<pre><code class="ruby">
44
nb_format = Spreadsheet::Format.new(number_format: '#,##0.00') # deutsches Excel tauscht . und , aus
45
sheet.column(1).default_format = nb_format
46
sheet.column(1).width = 100
47
</code></pre>
48
49 4 Martin Meier
50 1 Martin Meier
h2. Verbinden von Zellen (cell merge)
51
52 7 Martin Meier
<pre><code class="ruby">
53 1 Martin Meier
sheet.merge_cells(start_row, start_col, end_row, end_col)
54 7 Martin Meier
</code></pre>
55 1 Martin Meier
Danke an http://stackoverflow.com/a/11603384/1065703