axlsx_styler 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +146 -13
- data/examples/colors_and_borders.rb +9 -4
- data/lib/axlsx_styler.rb +3 -3
- data/lib/axlsx_styler/version.rb +1 -1
- data/spreadsheet.png +0 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 741a7a700d2d37228f6002dcc7776f00d3c975ec
|
4
|
+
data.tar.gz: 049469dbe509df37e8c21c3702248ab5eabb467e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e80a33c66d5f932b502b5ba69fb5a03ed764295a5798a98279acb9c001f66e53cd4b821568fe4dab69c442a3ae6986cad845a6b04841bd2844204da260403677
|
7
|
+
data.tar.gz: 4096057d99938214307c0b2a7f217b3a632cd84011dfec1065bdc62a3380568445116b4eebe2e5fcbeba15403e9cd2f95282d633f01f752235df9bdcfbd7b75e
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,151 @@
|
|
1
1
|
# AxlsxStyler
|
2
2
|
|
3
|
-
|
3
|
+
[Axlsx](https://github.com/randym/axlsx) gem is an excellent tool to
|
4
|
+
build Excel spreadsheets. The sheets are
|
5
|
+
created row-by-row and styles are immediately added to each cell when a
|
6
|
+
row is created. This gem allows to follow an alternative route: fill out
|
7
|
+
a spreadsheet with data and apply styles later. Styles can be added
|
8
|
+
to individual cells as well as to ranges of cells. As a bonus, this gem
|
9
|
+
also simplifies drawing borders around groups of cells.
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
This gem extend `Array` class in a way that allows you to apply
|
14
|
+
styles to ranges of cells, e.g.
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
sheet["A1:D10"].add_style b: true
|
18
|
+
```
|
19
|
+
|
20
|
+
The styles can be overlayed, so that later on you can add another style
|
21
|
+
to cells that already have styles, e.g.
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
sheet["A1:D1"].add_style bg_color: 'FF0000'
|
25
|
+
```
|
26
|
+
|
27
|
+
You can also add borders to ranges of cells:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
sheet["B2:D5"].add_border
|
31
|
+
sheet["B2:B5"].add_border [:right]
|
32
|
+
```
|
33
|
+
|
34
|
+
When you are done with styling you just need to run
|
35
|
+
|
36
|
+
```ruby
|
37
|
+
workbook.apply_styles
|
38
|
+
```
|
39
|
+
|
40
|
+
Here's an example that compares styling a simple table with and without
|
41
|
+
AxlsxStyler. Suppose make our spreadsheet to look as follows:
|
42
|
+
|
43
|
+

|
44
|
+
|
45
|
+
### With `AxlsxStyler`
|
46
|
+
|
47
|
+
Just follow the step outlined above:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
require 'axlsx_styler'
|
51
|
+
|
52
|
+
axlsx = Axlsx::Package.new
|
53
|
+
workbook = axlsx.workbook
|
54
|
+
|
55
|
+
workbook.add_worksheet do |sheet|
|
56
|
+
sheet.add_row
|
57
|
+
sheet.add_row ["", "Product", "Category", "Price"]
|
58
|
+
sheet.add_row ["", "Butter", "Dairy", 4.99]
|
59
|
+
sheet.add_row ["", "Bread", "Baked Goods", 3.45]
|
60
|
+
sheet.add_row ["", "Broccoli", "Produce", 2.99]
|
61
|
+
sheet.column_widths 5, 20, 20, 20
|
62
|
+
|
63
|
+
# using AxlsxStyler DSL
|
64
|
+
sheet["B2:D2"].add_style b: true
|
65
|
+
sheet["B2:B5"].add_style b: true
|
66
|
+
sheet["B2:D2"].add_style bg_color: "95AFBA"
|
67
|
+
sheet["B3:D5"].add_style bg_color: "E2F89C"
|
68
|
+
sheet["D3:D5"].add_style alignment: { horizontal: :left }
|
69
|
+
sheet["B2:D5"].add_border
|
70
|
+
sheet["B3:D3"].add_border [:top]
|
71
|
+
end
|
72
|
+
|
73
|
+
workbook.apply_styles
|
74
|
+
|
75
|
+
axlsx.serialize "grocery.xlsx"
|
76
|
+
```
|
77
|
+
|
78
|
+
### With plain `Axlsx` gem
|
79
|
+
|
80
|
+
This example can be DRYied up, but it gives you a rough idea of what you
|
81
|
+
need to go through.
|
82
|
+
|
83
|
+
```ruby
|
84
|
+
require 'axlsx'
|
85
|
+
axlsx = Axlsx::Package.new
|
86
|
+
wb = axlsx.workbook
|
87
|
+
border_color = '000000'
|
88
|
+
wb.add_worksheet do |sheet|
|
89
|
+
# top row
|
90
|
+
header_hash = { b: true, bg_color: '95AFBA' }
|
91
|
+
top_left_corner = wb.styles.add_style header_hash.merge({
|
92
|
+
border: { style: :thin, color: border_color, edges: [:top, :left, :bottom] }
|
93
|
+
})
|
94
|
+
top_edge = wb.styles.add_style header_hash.merge({
|
95
|
+
border: { style: :thin, color: border_color, edges: [:top, :bottom] }
|
96
|
+
})
|
97
|
+
top_right_corner = wb.styles.add_style header_hash.merge({
|
98
|
+
border: { style: :thin, color: border_color, edges: [:top, :right, :bottom] }
|
99
|
+
})
|
100
|
+
sheet.add_row
|
101
|
+
sheet.add_row(["", "Product", "Category", "Price"],
|
102
|
+
style: [ nil, top_left_corner, top_edge, top_right_corner ]
|
103
|
+
)
|
104
|
+
|
105
|
+
# middle rows
|
106
|
+
color_hash = { bg_color: 'E2F89C' }
|
107
|
+
left_edge = wb.styles.add_style color_hash.merge(
|
108
|
+
b: true,
|
109
|
+
border: {
|
110
|
+
style: :thin, color: border_color, edges: [:left]
|
111
|
+
}
|
112
|
+
)
|
113
|
+
inner = wb.styles.add_style color_hash
|
114
|
+
right_edge = wb.styles.add_style color_hash.merge(
|
115
|
+
alignment: { horizontal: :left },
|
116
|
+
border: {
|
117
|
+
style: :thin, color: border_color, edges: [:right]
|
118
|
+
}
|
119
|
+
)
|
120
|
+
sheet.add_row(
|
121
|
+
["", "Butter", "Dairy", 4.99],
|
122
|
+
style: [nil, left_edge, inner, right_edge]
|
123
|
+
)
|
124
|
+
sheet.add_row(
|
125
|
+
["", "Bread", "Baked Goods", 3.45],
|
126
|
+
style: [nil, left_edge, inner, right_edge]
|
127
|
+
)
|
128
|
+
|
129
|
+
# last row
|
130
|
+
bottom_left_corner = wb.styles.add_style color_hash.merge({
|
131
|
+
b: true,
|
132
|
+
border: { style: :thin, color: border_color, edges: [:left, :bottom] }
|
133
|
+
})
|
134
|
+
bottom_edge = wb.styles.add_style color_hash.merge({
|
135
|
+
border: { style: :thin, color: border_color, edges: [:bottom] }
|
136
|
+
})
|
137
|
+
bottom_right_corner = wb.styles.add_style color_hash.merge({
|
138
|
+
alignment: { horizontal: :left },
|
139
|
+
border: { style: :thin, color: border_color, edges: [:right, :bottom] }
|
140
|
+
})
|
141
|
+
sheet.add_row(["", "Broccoli", "Produce", 2.99],
|
142
|
+
style: [nil, bottom_left_corner, bottom_edge, bottom_right_corner]
|
143
|
+
)
|
144
|
+
|
145
|
+
sheet.column_widths 5, 20, 20, 20
|
146
|
+
end
|
147
|
+
axlsx.serialize "grocery.xlsx"
|
148
|
+
```
|
4
149
|
|
5
150
|
## Installation
|
6
151
|
|
@@ -15,15 +160,3 @@ And then execute:
|
|
15
160
|
Or install it yourself as:
|
16
161
|
|
17
162
|
$ gem install axlsx_styler
|
18
|
-
|
19
|
-
## Usage
|
20
|
-
|
21
|
-
TODO: Write usage instructions here
|
22
|
-
|
23
|
-
## Contributing
|
24
|
-
|
25
|
-
1. Fork it ( https://github.com/[my-github-username]/axlsx_styler/fork )
|
26
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
-
5. Create a new Pull Request
|
@@ -9,13 +9,18 @@ workbook.add_worksheet do |sheet|
|
|
9
9
|
sheet.add_row ["", "Butter", "Dairy", 4.99]
|
10
10
|
sheet.add_row ["", "Bread", "Baked Goods", 3.45]
|
11
11
|
sheet.add_row ["", "Broccoli", "Produce", 2.99]
|
12
|
+
sheet.column_widths 5, 20, 20, 20
|
12
13
|
|
13
|
-
|
14
|
-
sheet["B2:
|
14
|
+
# using AxlsxStyler DSL
|
15
|
+
sheet["B2:D2"].add_style b: true
|
16
|
+
sheet["B2:B5"].add_style b: true
|
17
|
+
sheet["B2:D2"].add_style bg_color: "95AFBA"
|
18
|
+
sheet["B3:D5"].add_style bg_color: "E2F89C"
|
19
|
+
sheet["D3:D5"].add_style alignment: { horizontal: :left }
|
15
20
|
sheet["B2:D5"].add_border
|
16
|
-
sheet["B3:D3"].add_border
|
21
|
+
sheet["B3:D3"].add_border [:top]
|
17
22
|
end
|
18
23
|
|
19
24
|
workbook.apply_styles
|
20
25
|
|
21
|
-
axlsx.serialize "grocery.xlsx"
|
26
|
+
axlsx.serialize "../grocery.xlsx"
|
data/lib/axlsx_styler.rb
CHANGED
@@ -4,6 +4,6 @@ require 'axlsx_styler/version'
|
|
4
4
|
require 'axlsx_styler/array'
|
5
5
|
require 'axlsx_styler/axlsx_extensions'
|
6
6
|
|
7
|
-
Array.include AxlsxStyler::Array
|
8
|
-
Axlsx::Workbook.include AxlsxStyler::Axlsx::Workbook
|
9
|
-
Axlsx::Cell.include AxlsxStyler::Axlsx::Cell
|
7
|
+
Array.send :include, AxlsxStyler::Array
|
8
|
+
Axlsx::Workbook.send :include, AxlsxStyler::Axlsx::Workbook
|
9
|
+
Axlsx::Cell.send :include, AxlsxStyler::Axlsx::Cell
|
data/lib/axlsx_styler/version.rb
CHANGED
data/spreadsheet.png
ADDED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: axlsx_styler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Sakovich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: axlsx
|
@@ -99,11 +99,11 @@ files:
|
|
99
99
|
- Rakefile
|
100
100
|
- axlsx_styler.gemspec
|
101
101
|
- examples/colors_and_borders.rb
|
102
|
-
- examples/grocery.xlsx
|
103
102
|
- lib/axlsx_styler.rb
|
104
103
|
- lib/axlsx_styler/array.rb
|
105
104
|
- lib/axlsx_styler/axlsx_extensions.rb
|
106
105
|
- lib/axlsx_styler/version.rb
|
106
|
+
- spreadsheet.png
|
107
107
|
- test/array_test.rb
|
108
108
|
- test/cell_test.rb
|
109
109
|
- test/test_helper.rb
|