axlsx_styler 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a78ec129205b19cc466a29461787fcdd8e4d6113
4
- data.tar.gz: 0c04a30a6c48799392eb765e7fbd67c6236ef294
3
+ metadata.gz: cd31d073d9ff50b0f751553c2623c372ec9a4d1d
4
+ data.tar.gz: d8c93fe14f0215c0aa0619ebfcb37cc6479f9781
5
5
  SHA512:
6
- metadata.gz: c280bc771e8bda4131834f6a68502e5ade34ed808b61a996327806927d1467485fd226cebbba347940e97754f894053d15d02cd11b11e0292028197ebe868fdb
7
- data.tar.gz: 6aca119eb6c65299047e927836c972dcc5252f02bed720bc4a9d7fc6da0bce77e78a560ad74d6efe617076db2881d0627a1217ccd51462e4d9288dc95144f09f
6
+ metadata.gz: e99d3aae264ab742166af6b76fb34d9d2b19d61e2a57cf56d9d35d3102f7a45365da068cc18f16f945082907ec73beece46e9a79808acfb3b290498b07b6efde
7
+ data.tar.gz: 392fcc8712ce0fc970894f19671324ff327bc8a712a2753be62230ff80f08df12e6501073c7f0521c57b596b144e06b7cfff45ea6e1737f35a99de20c24d84ff
data/README.md CHANGED
@@ -9,7 +9,7 @@ row is created.
9
9
  a spreadsheet with data and apply styles later. Paired with
10
10
  [axlsx_rails](https://github.com/straydogstudio/axlsx_rails) this gem
11
11
  allows to build clean and maintainable Excel views in a Rails app. It can also
12
- be used outside of any specific ruby framework as shown in example below.
12
+ be used outside of any specific Ruby framework as shown in example below.
13
13
 
14
14
  ## Usage
15
15
 
@@ -44,19 +44,13 @@ sheet.add_border 'B2:D5', { edges: [:bottom, :right], style: :thick, color: 'FF0
44
44
 
45
45
  Border parameters are optional. The default is to draw a thin black border on all four edges of the selected cell range.
46
46
 
47
- The styles are applied with a simple call:
48
47
 
49
- ```ruby
50
- workbook.apply_styles
51
- ```
48
+ ### Example
52
49
 
53
- Here's an example that compares styling a simple table with and without
54
- `axlsx_styler`. Suppose we wand to create the following spreadsheet:
50
+ Suppose we want create the following spreadsheet:
55
51
 
56
52
  ![alt text](./spreadsheet.png "Sample Spreadsheet")
57
53
 
58
- ### `axlsx` paired with `axlsx_styler`
59
-
60
54
  You can apply styles after all data is entered, similar to how you'd create
61
55
  an Excel document by hand:
62
56
 
@@ -82,92 +76,16 @@ workbook.add_worksheet do |sheet|
82
76
  sheet.add_border 'B2:D5'
83
77
  sheet.add_border 'B3:D3', [:top]
84
78
  end
85
- workbook.apply_styles
86
79
  axlsx.serialize 'grocery.xlsx'
87
80
  ```
88
81
 
89
- ### `axlsx` gem without `axlsx_styler`
90
-
91
- Whith plain `axlsx` you need to know which styles you're going to use beforehand.
92
- The code for our example is a bit more envolved:
93
-
94
- ```ruby
95
- require 'axlsx'
96
- axlsx = Axlsx::Package.new
97
- wb = axlsx.workbook
98
- border_color = '000000'
99
- wb.add_worksheet do |sheet|
100
- # top row
101
- header_hash = { b: true, bg_color: '95AFBA' }
102
- top_left_corner = wb.styles.add_style header_hash.merge({
103
- border: { style: :thin, color: border_color, edges: [:top, :left, :bottom] }
104
- })
105
- top_edge = wb.styles.add_style header_hash.merge({
106
- border: { style: :thin, color: border_color, edges: [:top, :bottom] }
107
- })
108
- top_right_corner = wb.styles.add_style header_hash.merge({
109
- border: { style: :thin, color: border_color, edges: [:top, :right, :bottom] }
110
- })
111
- sheet.add_row
112
- sheet.add_row(["", "Product", "Category", "Price"],
113
- style: [ nil, top_left_corner, top_edge, top_right_corner ]
114
- )
115
-
116
- # middle rows
117
- color_hash = { bg_color: 'E2F89C' }
118
- left_edge = wb.styles.add_style color_hash.merge(
119
- b: true,
120
- border: {
121
- style: :thin, color: border_color, edges: [:left]
122
- }
123
- )
124
- inner = wb.styles.add_style color_hash
125
- right_edge = wb.styles.add_style color_hash.merge(
126
- alignment: { horizontal: :left },
127
- border: {
128
- style: :thin, color: border_color, edges: [:right]
129
- }
130
- )
131
- sheet.add_row(
132
- ["", "Butter", "Dairy", 4.99],
133
- style: [nil, left_edge, inner, right_edge]
134
- )
135
- sheet.add_row(
136
- ["", "Bread", "Baked Goods", 3.45],
137
- style: [nil, left_edge, inner, right_edge]
138
- )
139
-
140
- # last row
141
- bottom_left_corner = wb.styles.add_style color_hash.merge({
142
- b: true,
143
- border: { style: :thin, color: border_color, edges: [:left, :bottom] }
144
- })
145
- bottom_edge = wb.styles.add_style color_hash.merge({
146
- border: { style: :thin, color: border_color, edges: [:bottom] }
147
- })
148
- bottom_right_corner = wb.styles.add_style color_hash.merge({
149
- alignment: { horizontal: :left },
150
- border: { style: :thin, color: border_color, edges: [:right, :bottom] }
151
- })
152
- sheet.add_row(["", "Broccoli", "Produce", 2.99],
153
- style: [nil, bottom_left_corner, bottom_edge, bottom_right_corner]
154
- )
155
-
156
- sheet.column_widths 5, 20, 20, 20
157
- end
158
- axlsx.serialize "grocery.xlsx"
159
- ```
160
-
161
- ## Installation
162
-
163
- Add this line to your application's Gemfile:
164
-
165
- gem 'axlsx_styler'
166
-
167
- And then execute:
82
+ Producing the same spreadsheet with vanilla `axlsx` turns out [a bit trickier](./examples/vanilla_axlsx.md).
168
83
 
169
- $ bundle
170
84
 
171
- Or install it yourself as:
85
+ ## Change log
172
86
 
173
- $ gem install axlsx_styler
87
+ Version | Change
88
+ --------|-------
89
+ 0.1.5 | Hide `Workbook#apply_styles` method to make it easier to use.
90
+ 0.1.3 | Make border styles customazible.
91
+ 0.1.2 | Allow applying multiple style hashes.
@@ -0,0 +1,70 @@
1
+ This gem is supposed to make styling spreadsheets easier.
2
+
3
+ Here's how the [example from the README](../README.md) compares to that implemented with plain `axlsx`.
4
+
5
+ ```ruby
6
+ require 'axlsx'
7
+ axlsx = Axlsx::Package.new
8
+ wb = axlsx.workbook
9
+ border_color = '000000'
10
+ wb.add_worksheet do |sheet|
11
+ # top row
12
+ header_hash = { b: true, bg_color: '95AFBA' }
13
+ top_left_corner = wb.styles.add_style header_hash.merge({
14
+ border: { style: :thin, color: border_color, edges: [:top, :left, :bottom] }
15
+ })
16
+ top_edge = wb.styles.add_style header_hash.merge({
17
+ border: { style: :thin, color: border_color, edges: [:top, :bottom] }
18
+ })
19
+ top_right_corner = wb.styles.add_style header_hash.merge({
20
+ border: { style: :thin, color: border_color, edges: [:top, :right, :bottom] }
21
+ })
22
+ sheet.add_row
23
+ sheet.add_row(["", "Product", "Category", "Price"],
24
+ style: [ nil, top_left_corner, top_edge, top_right_corner ]
25
+ )
26
+
27
+ # middle rows
28
+ color_hash = { bg_color: 'E2F89C' }
29
+ left_edge = wb.styles.add_style color_hash.merge(
30
+ b: true,
31
+ border: {
32
+ style: :thin, color: border_color, edges: [:left]
33
+ }
34
+ )
35
+ inner = wb.styles.add_style color_hash
36
+ right_edge = wb.styles.add_style color_hash.merge(
37
+ alignment: { horizontal: :left },
38
+ border: {
39
+ style: :thin, color: border_color, edges: [:right]
40
+ }
41
+ )
42
+ sheet.add_row(
43
+ ["", "Butter", "Dairy", 4.99],
44
+ style: [nil, left_edge, inner, right_edge]
45
+ )
46
+ sheet.add_row(
47
+ ["", "Bread", "Baked Goods", 3.45],
48
+ style: [nil, left_edge, inner, right_edge]
49
+ )
50
+
51
+ # last row
52
+ bottom_left_corner = wb.styles.add_style color_hash.merge({
53
+ b: true,
54
+ border: { style: :thin, color: border_color, edges: [:left, :bottom] }
55
+ })
56
+ bottom_edge = wb.styles.add_style color_hash.merge({
57
+ border: { style: :thin, color: border_color, edges: [:bottom] }
58
+ })
59
+ bottom_right_corner = wb.styles.add_style color_hash.merge({
60
+ alignment: { horizontal: :left },
61
+ border: { style: :thin, color: border_color, edges: [:right, :bottom] }
62
+ })
63
+ sheet.add_row(["", "Broccoli", "Produce", 2.99],
64
+ style: [nil, bottom_left_corner, bottom_edge, bottom_right_corner]
65
+ )
66
+
67
+ sheet.column_widths 5, 20, 20, 20
68
+ end
69
+ axlsx.serialize "grocery.xlsx"
70
+ ```
@@ -8,3 +8,24 @@ require 'axlsx_styler/axlsx_cell'
8
8
  Axlsx::Workbook.send :include, AxlsxStyler::Axlsx::Workbook
9
9
  Axlsx::Worksheet.send :include, AxlsxStyler::Axlsx::Worksheet
10
10
  Axlsx::Cell.send :include, AxlsxStyler::Axlsx::Cell
11
+
12
+ module Axlsx
13
+ class Package
14
+
15
+ # Patches the original Axlsx::Package#serialize method so that styles are
16
+ # applied when the workbook is saved
17
+ original_serialize = instance_method(:serialize)
18
+ define_method :serialize do |*args|
19
+ workbook.apply_styles if !workbook.styles_applied
20
+ original_serialize.bind(self).(*args)
21
+ end
22
+
23
+ # Patches the original Axlsx::Package#to_stream method so that styles are
24
+ # applied when the workbook is converted to StringIO
25
+ original_to_stream = instance_method(:to_stream)
26
+ define_method :to_stream do |*args|
27
+ workbook.apply_styles if !workbook.styles_applied
28
+ original_to_stream.bind(self).(*args)
29
+ end
30
+ end
31
+ end
@@ -22,8 +22,8 @@ module AxlsxStyler
22
22
  # with regular Hash#merge adding borders fails miserably
23
23
  new_style = raw_style.deep_merge style
24
24
  if with_border?(raw_style) && with_border?(style)
25
- border_at = raw_style[:border][:edges] + style[:border][:edges]
26
- new_style[:border][:edges] = border_at.uniq
25
+ border_at = (raw_style[:border][:edges] || all_edges) + (style[:border][:edges] || all_edges)
26
+ new_style[:border][:edges] = border_at.uniq.sort
27
27
  elsif with_border?(style)
28
28
  new_style[:border] = style[:border]
29
29
  end
@@ -33,6 +33,10 @@ module AxlsxStyler
33
33
  def with_border?(style)
34
34
  !style[:border].nil?
35
35
  end
36
+
37
+ def all_edges
38
+ [:top, :right, :bottom, :left]
39
+ end
36
40
  end
37
41
  end
38
42
  end
@@ -1,9 +1,15 @@
1
+ require 'set'
2
+
1
3
  module AxlsxStyler
2
4
  module Axlsx
3
5
  module Workbook
4
6
  # An array that holds all cells with styles
5
7
  attr_accessor :styled_cells
6
8
 
9
+ # Checks if styles are idexed to make it work for pre 0.1.5 version
10
+ # users that still explicitly call @workbook.apply_styles
11
+ attr_accessor :styles_applied
12
+
7
13
  # An index for cell styles
8
14
  # {
9
15
  # 1 => < style_hash >,
@@ -25,13 +31,13 @@ module AxlsxStyler
25
31
  styled_cells.each do |cell|
26
32
  set_style_index(cell)
27
33
  end
34
+ self.styles_applied = true
28
35
  end
29
36
 
30
37
  private
31
38
 
32
39
  # Check if style code
33
40
  def set_style_index(cell)
34
- # @TODO fix this hack
35
41
  self.style_index ||= {}
36
42
 
37
43
  index_item = style_index.select { |_, v| v == cell.raw_style }.first
@@ -1,3 +1,3 @@
1
1
  module AxlsxStyler
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.5'
3
3
  end
@@ -6,14 +6,71 @@ class IntegrationTest < MiniTest::Test
6
6
  @workbook = @axlsx.workbook
7
7
  end
8
8
 
9
- # Save files in case you'd like to see what the result is
10
- def teardown
11
- return unless @filename
12
- @axlsx.serialize File.expand_path("../../tmp/#{@filename}.xlsx", __FILE__)
9
+ # Save to a file using Axlsx::Package#serialize
10
+ def serialize(filename)
11
+ @axlsx.serialize File.expand_path("../../tmp/#{filename}.xlsx", __FILE__)
12
+ assert_equal true, @workbook.styles_applied
13
+ end
14
+
15
+ # Save to a file by getting contents from stream
16
+ def to_stream(filename)
17
+ File.open(File.expand_path("../../tmp/#{filename}.xlsx", __FILE__), 'w') do |f|
18
+ f.write @axlsx.to_stream.read
19
+ end
20
+ end
21
+
22
+ # New functionality as of 0.1.5 (serialize)
23
+ def test_works_without_apply_styles_serialize
24
+ filename = 'without_apply_styles_serialize'
25
+ assert_equal nil, @workbook.styles_applied
26
+ @workbook.add_worksheet do |sheet|
27
+ sheet.add_row ['A1', 'B1']
28
+ sheet.add_style 'A1:B1', b: true
29
+ end
30
+ serialize(filename)
31
+ assert_equal 1, @workbook.style_index.count
32
+ end
33
+
34
+ # New functionality as of 0.1.5 (to_stream)
35
+ def test_works_without_apply_styles_to_stream
36
+ filename = 'without_apply_styles_to_stream'
37
+ assert_equal nil, @workbook.styles_applied
38
+ @workbook.add_worksheet do |sheet|
39
+ sheet.add_row ['A1', 'B1']
40
+ sheet.add_style 'A1:B1', b: true
41
+ end
42
+ to_stream(filename)
43
+ assert_equal 1, @workbook.style_index.count
44
+ end
45
+
46
+ # Backwards compatibility with pre 0.1.5 (serialize)
47
+ def test_works_with_apply_styles_serialize
48
+ filename = 'with_apply_styles_serialize'
49
+ assert_equal nil, @workbook.styles_applied
50
+ @workbook.add_worksheet do |sheet|
51
+ sheet.add_row ['A1', 'B1']
52
+ sheet.add_style 'A1:B1', b: true
53
+ end
54
+ @workbook.apply_styles # important for backwards compatibility
55
+ assert_equal 1, @workbook.style_index.count
56
+ serialize(filename)
57
+ end
58
+
59
+ # Backwards compatibility with pre 0.1.5 (to_stream)
60
+ def test_works_with_apply_styles_to_stream
61
+ filename = 'with_apply_styles_to_stream'
62
+ assert_equal nil, @workbook.styles_applied
63
+ @workbook.add_worksheet do |sheet|
64
+ sheet.add_row ['A1', 'B1']
65
+ sheet.add_style 'A1:B1', b: true
66
+ end
67
+ @workbook.apply_styles # important for backwards compatibility
68
+ assert_equal 1, @workbook.style_index.count
69
+ to_stream(filename)
13
70
  end
14
71
 
15
72
  def test_table_with_borders
16
- @filename = 'borders_test'
73
+ filename = 'borders_test'
17
74
  @workbook.add_worksheet do |sheet|
18
75
  sheet.add_row
19
76
  sheet.add_row ['', 'Product', 'Category', 'Price']
@@ -23,7 +80,6 @@ class IntegrationTest < MiniTest::Test
23
80
  sheet.add_row ['', 'Pizza', 'Frozen Foods', 4.99]
24
81
  sheet.column_widths 5, 20, 20, 20
25
82
 
26
- # using AxlsxStyler DSL
27
83
  sheet.add_style 'B2:D2', b: true
28
84
  sheet.add_style 'B2:B6', b: true
29
85
  sheet.add_style 'B2:D2', bg_color: '95AFBA'
@@ -34,13 +90,13 @@ class IntegrationTest < MiniTest::Test
34
90
  sheet.add_border 'B3:D3', edges: [:bottom], style: :medium
35
91
  sheet.add_border 'B3:D3', edges: [:bottom], style: :medium, color: '32f332'
36
92
  end
37
- @workbook.apply_styles
93
+ serialize(filename)
38
94
  assert_equal 12, @workbook.style_index.count
39
95
  assert_equal 12 + 2, @workbook.style_index.keys.max
40
96
  end
41
97
 
42
98
  def test_duplicate_borders
43
- @filename = 'duplicate_borders_test'
99
+ filename = 'duplicate_borders_test'
44
100
  @workbook.add_worksheet do |sheet|
45
101
  sheet.add_row
46
102
  sheet.add_row ['', 'B2', 'C2', 'D2']
@@ -50,13 +106,13 @@ class IntegrationTest < MiniTest::Test
50
106
  sheet.add_border 'B2:D4'
51
107
  sheet.add_border 'B2:D4'
52
108
  end
53
- @workbook.apply_styles
109
+ serialize(filename)
54
110
  assert_equal 8, @workbook.style_index.count
55
111
  assert_equal 8, @workbook.styled_cells.count
56
112
  end
57
113
 
58
114
  def test_multiple_style_borders_on_same_sells
59
- @filename = 'multiple_style_borders'
115
+ filename = 'multiple_style_borders'
60
116
  @workbook.add_worksheet do |sheet|
61
117
  sheet.add_row
62
118
  sheet.add_row ['', 'B2', 'C2', 'D2']
@@ -65,7 +121,7 @@ class IntegrationTest < MiniTest::Test
65
121
  sheet.add_border 'B2:D3', :all
66
122
  sheet.add_border 'B2:D2', edges: [:bottom], style: :thick, color: 'ff0000'
67
123
  end
68
- @workbook.apply_styles
124
+ serialize(filename)
69
125
  assert_equal 6, @workbook.style_index.count
70
126
  assert_equal 6, @workbook.styled_cells.count
71
127
 
@@ -73,25 +129,25 @@ class IntegrationTest < MiniTest::Test
73
129
  border: {
74
130
  style: :thick,
75
131
  color: 'ff0000',
76
- edges: [:top, :left, :bottom]
132
+ edges: [:bottom, :left, :top]
77
133
  }
78
134
  }
79
135
  assert_equal b2_cell_style, @workbook.style_index
80
- .find { |_, v| v[:border][:edges] == [:top, :left, :bottom] }[1]
136
+ .find { |_, v| v[:border][:edges] == [:bottom, :left, :top] }[1]
81
137
 
82
138
  d3_cell_style = {
83
139
  border: {
84
140
  style: :thin,
85
141
  color: '000000',
86
- edges: [:right, :bottom]
142
+ edges: [:bottom, :right]
87
143
  }
88
144
  }
89
145
  assert_equal d3_cell_style, @workbook.style_index
90
- .find { |_, v| v[:border][:edges] == [:right, :bottom] }[1]
146
+ .find { |_, v| v[:border][:edges] == [:bottom, :right] }[1]
91
147
  end
92
148
 
93
149
  def test_table_with_num_fmt
94
- @filename = 'num_fmt_test'
150
+ filename = 'num_fmt_test'
95
151
  t = Time.now
96
152
  day = 24 * 60 * 60
97
153
  @workbook.add_worksheet do |sheet|
@@ -103,14 +159,14 @@ class IntegrationTest < MiniTest::Test
103
159
  sheet.add_style 'A1:B1', b: true
104
160
  sheet.add_style 'A2:A4', format_code: 'YYYY-MM-DD hh:mm:ss'
105
161
  end
106
- @workbook.apply_styles
162
+ serialize(filename)
107
163
  assert_equal 2, @workbook.style_index.count
108
164
  assert_equal 2 + 2, @workbook.style_index.keys.max
109
165
  assert_equal 5, @workbook.styled_cells.count
110
166
  end
111
167
 
112
168
  def test_duplicate_styles
113
- @filename = 'duplicate_styles'
169
+ filename = 'duplicate_styles'
114
170
  @workbook.add_worksheet do |sheet|
115
171
  sheet.add_row %w(Index City)
116
172
  sheet.add_row [1, 'Ottawa']
@@ -121,13 +177,13 @@ class IntegrationTest < MiniTest::Test
121
177
  sheet.add_style 'A1:A3', b: true
122
178
  sheet.add_style 'A1:A3', b: true
123
179
  end
124
- @workbook.apply_styles
180
+ serialize(filename)
125
181
  assert_equal 4, @workbook.styled_cells.count
126
182
  assert_equal 3, @workbook.style_index.count
127
183
  end
128
184
 
129
185
  def test_multiple_named_styles
130
- @filename = 'multiple_named_styles'
186
+ filename = 'multiple_named_styles'
131
187
  bold_blue = { b: true, fg_color: '0000FF' }
132
188
  large = { sz: 16 }
133
189
  red = { fg_color: 'FF0000' }
@@ -139,8 +195,40 @@ class IntegrationTest < MiniTest::Test
139
195
  sheet.add_style 'A1:B1', bold_blue, large
140
196
  sheet.add_style 'A1:A3', red
141
197
  end
142
- @workbook.apply_styles
198
+ serialize(filename)
143
199
  assert_equal 4, @workbook.styled_cells.count
144
200
  assert_equal 3, @workbook.style_index.count
145
201
  end
202
+
203
+ # Overriding borders (part 1)
204
+ def test_mixed_borders_1
205
+ @filename = 'mixed_borders_1'
206
+ @workbook.add_worksheet do |sheet|
207
+ sheet.add_row
208
+ sheet.add_row ['', '1', '2', '3']
209
+ sheet.add_row ['', '4', '5', '6']
210
+ sheet.add_row ['', '7', '8', '9']
211
+ sheet.add_style 'B2:D4', border: { style: :thin, color: '000000' }
212
+ sheet.add_border 'C3:D4', style: :medium
213
+ end
214
+ @workbook.apply_styles
215
+ assert_equal 9, @workbook.styled_cells.count
216
+ assert_equal 2, @workbook.style_index.count
217
+ end
218
+
219
+ # Overriding borders (part 2)
220
+ def test_mixed_borders
221
+ @filename = 'mixed_borders_2'
222
+ @workbook.add_worksheet do |sheet|
223
+ sheet.add_row
224
+ sheet.add_row ['', '1', '2', '3']
225
+ sheet.add_row ['', '4', '5', '6']
226
+ sheet.add_row ['', '7', '8', '9']
227
+ sheet.add_border 'B2:D4', style: :medium
228
+ sheet.add_style 'D2:D4', border: { style: :thin, color: '000000' }
229
+ end
230
+ @workbook.apply_styles
231
+ assert_equal 8, @workbook.styled_cells.count
232
+ assert_equal 6, @workbook.style_index.count
233
+ end
146
234
  end
@@ -5,5 +5,6 @@ class WorkbookTest < MiniTest::Test
5
5
  wb.add_styled_cell 'Cell 1'
6
6
  wb.add_styled_cell 'Cell 2'
7
7
  assert_equal ['Cell 1', 'Cell 2'].to_set, wb.styled_cells
8
+ assert_equal nil, wb.styles_applied
8
9
  end
9
10
  end
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.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Sakovich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-22 00:00:00.000000000 Z
11
+ date: 2016-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: axlsx
@@ -113,6 +113,7 @@ files:
113
113
  - Rakefile
114
114
  - axlsx_styler.gemspec
115
115
  - examples/colors_and_borders.rb
116
+ - examples/vanilla_axlsx.md
116
117
  - lib/axlsx_styler.rb
117
118
  - lib/axlsx_styler/axlsx_cell.rb
118
119
  - lib/axlsx_styler/axlsx_workbook.rb