fast_excel 0.2.6 → 0.3.0

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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/.dockerignore +2 -0
  3. data/.gitignore +3 -0
  4. data/.travis.yml +18 -6
  5. data/CHANGELOG.md +14 -1
  6. data/Dockerfile.test +16 -0
  7. data/Gemfile +1 -1
  8. data/Gemfile.lock +21 -21
  9. data/Makefile +13 -2
  10. data/README.md +148 -38
  11. data/Rakefile +2 -0
  12. data/examples/example.rb +3 -3
  13. data/examples/example_filters.rb +36 -0
  14. data/examples/example_formula.rb +1 -3
  15. data/examples/example_hyperlink.rb +20 -0
  16. data/fast_excel.gemspec +1 -1
  17. data/lib/fast_excel.rb +36 -12
  18. data/lib/fast_excel/binding.rb +31 -21
  19. data/lib/fast_excel/binding/chart.rb +20 -1
  20. data/lib/fast_excel/binding/workbook.rb +10 -2
  21. data/lib/fast_excel/binding/worksheet.rb +44 -27
  22. data/libxlsxwriter/.gitignore +1 -0
  23. data/libxlsxwriter/.indent.pro +5 -0
  24. data/libxlsxwriter/CMakeLists.txt +1 -11
  25. data/libxlsxwriter/CONTRIBUTING.md +1 -1
  26. data/libxlsxwriter/Changes.txt +84 -0
  27. data/libxlsxwriter/LICENSE.txt +1 -1
  28. data/libxlsxwriter/Makefile +7 -5
  29. data/libxlsxwriter/Readme.md +1 -1
  30. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +1 -0
  31. data/libxlsxwriter/include/xlsxwriter.h +2 -2
  32. data/libxlsxwriter/include/xlsxwriter/app.h +2 -2
  33. data/libxlsxwriter/include/xlsxwriter/chart.h +56 -6
  34. data/libxlsxwriter/include/xlsxwriter/chartsheet.h +544 -0
  35. data/libxlsxwriter/include/xlsxwriter/common.h +27 -6
  36. data/libxlsxwriter/include/xlsxwriter/content_types.h +5 -2
  37. data/libxlsxwriter/include/xlsxwriter/core.h +2 -2
  38. data/libxlsxwriter/include/xlsxwriter/custom.h +2 -2
  39. data/libxlsxwriter/include/xlsxwriter/drawing.h +3 -2
  40. data/libxlsxwriter/include/xlsxwriter/format.h +3 -3
  41. data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
  42. data/libxlsxwriter/include/xlsxwriter/packager.h +13 -8
  43. data/libxlsxwriter/include/xlsxwriter/relationships.h +2 -2
  44. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +5 -3
  45. data/libxlsxwriter/include/xlsxwriter/styles.h +9 -4
  46. data/libxlsxwriter/include/xlsxwriter/theme.h +2 -2
  47. data/libxlsxwriter/include/xlsxwriter/utility.h +26 -2
  48. data/libxlsxwriter/include/xlsxwriter/workbook.h +232 -55
  49. data/libxlsxwriter/include/xlsxwriter/worksheet.h +264 -53
  50. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +3 -1
  51. data/libxlsxwriter/libxlsxwriter.podspec +1 -1
  52. data/libxlsxwriter/src/Makefile +3 -3
  53. data/libxlsxwriter/src/app.c +2 -2
  54. data/libxlsxwriter/src/chart.c +41 -5
  55. data/libxlsxwriter/src/chartsheet.c +508 -0
  56. data/libxlsxwriter/src/content_types.c +12 -4
  57. data/libxlsxwriter/src/core.c +2 -2
  58. data/libxlsxwriter/src/custom.c +2 -2
  59. data/libxlsxwriter/src/drawing.c +114 -17
  60. data/libxlsxwriter/src/format.c +3 -3
  61. data/libxlsxwriter/src/hash_table.c +1 -1
  62. data/libxlsxwriter/src/packager.c +369 -65
  63. data/libxlsxwriter/src/relationships.c +2 -2
  64. data/libxlsxwriter/src/shared_strings.c +18 -4
  65. data/libxlsxwriter/src/styles.c +56 -9
  66. data/libxlsxwriter/src/theme.c +2 -2
  67. data/libxlsxwriter/src/utility.c +53 -6
  68. data/libxlsxwriter/src/workbook.c +372 -56
  69. data/libxlsxwriter/src/worksheet.c +425 -76
  70. data/libxlsxwriter/src/xmlwriter.c +17 -8
  71. data/libxlsxwriter/third_party/minizip/ioapi.c +10 -0
  72. data/libxlsxwriter/third_party/minizip/zip.c +2 -0
  73. data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +2 -2
  74. data/libxlsxwriter/version.txt +1 -1
  75. data/test/tmpfile_test.rb +1 -0
  76. data/test/validations_test.rb +26 -6
  77. data/test/worksheet_test.rb +43 -0
  78. metadata +9 -6
  79. data/libxlsxwriter/.drone.yml +0 -27
  80. data/libxlsxwriter/appveyor.yml +0 -65
  81. data/libxlsxwriter/cmake/FindZLIB.cmake +0 -123
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26cc6868779b440f2c848e60a68bce2272760255e1c4d4e887edae312d16eb76
4
- data.tar.gz: 43e3d4288b2c2bb06685308a4c97b267a563d72c32c4902793dd6d3030cde890
3
+ metadata.gz: af06f03372f15efb18eaf09669f7822ee81b67a5d4c6be7a55c3b8eb2609fd82
4
+ data.tar.gz: af892b143b010078e56380d38c76216ff19cb524f3e73c5206d18131546f216c
5
5
  SHA512:
6
- metadata.gz: 49fa98254e1c6b147e0edd4262ddd87d5b75410b42b38843ae887bbb98ce9aae6bf6607bdebeec840bca73c98ebc5be1f451ed227d51a147fb6a1c6bd8bd0f67
7
- data.tar.gz: 724f6b6e146816061c270899d798faa6ddcbe29e8ce9aba958bc23cb14c3ecdd0e0ce7de686b92b997957c73164a7f83c52f3283499a193eab96670bc9fdecec
6
+ metadata.gz: 979827252546904e71283dcf5996636fad7d04963ea1d07f6adf916484ac94a39e9b5a6f7d479529cb42971f53dc2dbadf0c08d1d57caf3eac7a91747308b6f2
7
+ data.tar.gz: 6a64e0cfa1894134759a2a1784c78c2641ff6aec2b81c48e9afb81fcc335d24ff7a0022f3ef252bb2ba0824fc8afe5220159829bee5bc32556687ed170009bbd
@@ -0,0 +1,2 @@
1
+ libxlsxwriter
2
+ .git
data/.gitignore CHANGED
@@ -8,6 +8,9 @@ gen_ffi.rb
8
8
  a.out
9
9
  .DS_Store
10
10
  *.gem
11
+ *.cmake
12
+ libxlsxwriter/CmakeFiles
13
+ libxlsxwriter/CmakeCache.txt
11
14
  libxlsxwriter/dev
12
15
  libxlsxwriter/docs
13
16
  libxlsxwriter/examples
@@ -12,21 +12,33 @@ matrix:
12
12
  - os: osx
13
13
  rvm: 2.3.8
14
14
  - os: linux
15
- rvm: 2.4.5
15
+ rvm: 2.4.6
16
16
  - os: osx
17
- rvm: 2.4.5
17
+ rvm: 2.4.6
18
18
  - os: linux
19
- rvm: 2.5.3
19
+ rvm: 2.5.5
20
20
  - os: osx
21
- rvm: 2.5.3
21
+ rvm: 2.5.5
22
22
  - os: linux
23
- rvm: 2.6.0
23
+ rvm: 2.6.3
24
+ env: BUILD_DOCKER=true
25
+ services:
26
+ - docker
24
27
  - os: osx
25
- rvm: 2.6.0
28
+ rvm: 2.6.3
29
+ osx_image: xcode10.2
30
+ before_script:
31
+ - ls -lah /Applications
32
+ - sudo xcode-select -s /Applications/Xcode-10.2.1.app/Contents/Developer
33
+ - clang --version
26
34
  fast_finish: true
27
35
 
36
+ before_install:
37
+ - gem install bundler -v 2.0.2
38
+
28
39
  script:
29
40
  - bundle install
30
41
  - make
31
42
  - bundle exec rake test
32
43
  - bundle exec rake examples
44
+ - if [ -n "$BUILD_DOCKER" ]; then docker build . -f Dockerfile.test --build-arg TRAVIS_COMMIT --build-arg TRAVIS_BRANCH ; fi
@@ -1,3 +1,16 @@
1
+ #### Version 0.3.0 - 23 jul 2020
2
+
3
+ * Add support for FastExcel::URL
4
+ * Add support for writing boolean values
5
+ * Add enable_filters!(end_col: X)
6
+ * Allow to open with an empty existing file
7
+ * Add missing enums to chart
8
+ * Don't change sheet name from "" to nil
9
+ * Support build with docker
10
+ * Fix crash when sheet name exceeds maximum length.
11
+ * [BREAKING CHANGE] Rename `worksheet.right_to_left` to `worksheet.set_right_to_left`:
12
+ - now it will work properly when using the `pry-rails` gem, not forcing the document start from right even when this method is not called.
13
+
1
14
  #### Version 0.2.6 - 26 jan 2019
2
15
 
3
16
  * Add column auto width (thanks to @duffyjp)
@@ -37,4 +50,4 @@
37
50
 
38
51
  #### Version 0.1.0 - 24 feb 2017
39
52
 
40
- Initial
53
+ Initial
@@ -0,0 +1,16 @@
1
+ FROM ruby
2
+
3
+ RUN gem install fast_excel
4
+
5
+ ARG TRAVIS_COMMIT
6
+ ARG TRAVIS_BRANCH
7
+
8
+ RUN echo "source 'https://rubygems.org'" > Gemfile
9
+
10
+ RUN [ -z "$TRAVIS_COMMIT" ] && \
11
+ echo "gem 'fast_excel', git: 'https://github.com/Paxa/fast_excel.git'" >> Gemfile || true
12
+ RUN [ -z "$TRAVIS_COMMIT" ] || \
13
+ echo "gem 'fast_excel', git: 'https://github.com/Paxa/fast_excel.git', branch: '$TRAVIS_BRANCH', ref: '$TRAVIS_COMMIT'" >> Gemfile
14
+
15
+ RUN cat Gemfile
16
+ RUN bundle
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ gem 'ffi_gen', require: false
5
5
 
6
6
  gem 'rake'
7
7
 
8
- gem 'roo', '2.8.1', git: 'https://github.com/roo-rb/roo.git', tag: 'v2.8.1'
8
+ gem 'roo', '2.8.3', git: 'https://github.com/roo-rb/roo.git', tag: 'v2.8.3'
9
9
 
10
10
  gem 'minitest'
11
11
  gem 'minitest-reporters'
@@ -6,7 +6,7 @@ GIT
6
6
 
7
7
  GIT
8
8
  remote: https://github.com/randym/axlsx.git
9
- revision: c593a08b2a929dac7aa8dc418b55e26b4c49dc34
9
+ revision: 8e7b4b3b7259103452c191f73ce0bf64f66033fe
10
10
  specs:
11
11
  axlsx (3.0.0.pre)
12
12
  htmlentities (~> 4.3, >= 4.3.4)
@@ -16,44 +16,44 @@ GIT
16
16
 
17
17
  GIT
18
18
  remote: https://github.com/roo-rb/roo.git
19
- revision: 5bbda9849ca6deb0ad8020c4476c1ab9ddfd824b
20
- tag: v2.8.1
19
+ revision: d416f1520c50bbab160ca2ed9a49498fcc3edf50
20
+ tag: v2.8.3
21
21
  specs:
22
- roo (2.8.1)
22
+ roo (2.8.3)
23
23
  nokogiri (~> 1)
24
- rubyzip (>= 1.2.1, < 2.0.0)
24
+ rubyzip (>= 1.3.0, < 3.0.0)
25
25
 
26
26
  GEM
27
27
  remote: https://rubygems.org/
28
28
  specs:
29
29
  ansi (1.5.0)
30
- benchmark-ips (2.7.2)
31
- builder (3.2.3)
32
- ffi (1.10.0)
30
+ benchmark-ips (2.8.2)
31
+ builder (3.2.4)
32
+ ffi (1.13.1)
33
33
  ffi_gen (1.2.0)
34
34
  ffi (~> 1.0)
35
35
  htmlentities (4.3.4)
36
- mimemagic (0.3.3)
36
+ mimemagic (0.3.5)
37
37
  mini_portile2 (2.4.0)
38
- minitest (5.11.3)
39
- minitest-reporters (1.3.6)
38
+ minitest (5.14.1)
39
+ minitest-reporters (1.4.2)
40
40
  ansi
41
41
  builder
42
42
  minitest (>= 5.0)
43
43
  ruby-progressbar
44
- nokogiri (1.10.1)
44
+ nokogiri (1.10.10)
45
45
  mini_portile2 (~> 2.4.0)
46
- rake (12.3.2)
47
- ruby-progressbar (1.10.0)
48
- rubyzip (1.2.2)
49
- write_xlsx (0.85.5)
46
+ rake (13.0.1)
47
+ ruby-progressbar (1.10.1)
48
+ rubyzip (1.3.0)
49
+ write_xlsx (0.85.7)
50
50
  rubyzip (>= 1.0.0)
51
51
  zip-zip
52
- xlsxtream (2.1.0)
53
- zip_tricks (~> 4.5)
52
+ xlsxtream (2.4.0)
53
+ zip_tricks (>= 4.5, < 6)
54
54
  zip-zip (0.3)
55
55
  rubyzip (>= 1.0.0)
56
- zip_tricks (4.7.1)
56
+ zip_tricks (5.3.1)
57
57
 
58
58
  PLATFORMS
59
59
  ruby
@@ -67,9 +67,9 @@ DEPENDENCIES
67
67
  minitest-reporters
68
68
  process_memory!
69
69
  rake
70
- roo (= 2.8.1)!
70
+ roo (= 2.8.3)!
71
71
  write_xlsx
72
72
  xlsxtream
73
73
 
74
74
  BUNDLED WITH
75
- 1.17.2
75
+ 2.0.2
data/Makefile CHANGED
@@ -3,11 +3,22 @@ ifdef V
3
3
  Q=
4
4
  endif
5
5
 
6
+ # with xcode better to use cmake
7
+ UNAME_S := $(shell uname -s)
8
+ ifeq ($(UNAME_S),"Darwin")
9
+ USE_CMAKE := $(shell command -v cmake 2> /dev/null)
10
+ endif
11
+
6
12
  all :
7
- @echo "Compiling ext/text_width ..."
8
- rake compile
13
+ # @echo "Compiling ext/text_width ..."
14
+ # rake compile
9
15
  @echo "Compiling libxlsxwriter ..."
16
+ ifdef USE_CMAKE
17
+ @echo "run cmake libxlsxwriter ..."
18
+ cmake libxlsxwriter
19
+ else
10
20
  $(Q)$(MAKE) -C libxlsxwriter
21
+ endif
11
22
 
12
23
  clean :
13
24
  $(Q)$(MAKE) clean -C libxlsxwriter
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ```ruby
4
4
  require 'fast_excel'
5
5
 
6
- workbook = FastExcel.open("hello_world_ffi.xlsx", constant_memory: true)
6
+ workbook = FastExcel.open("hello_world.xlsx", constant_memory: true)
7
7
  workbook.default_format.set(
8
8
  font_size: 0, # user's default
9
9
  font_family: "Arial"
@@ -11,7 +11,7 @@ workbook.default_format.set(
11
11
 
12
12
  worksheet = workbook.add_worksheet("Example Report")
13
13
 
14
- bold = workbook.bold_cell_format
14
+ bold = workbook.bold_format
15
15
  worksheet.set_column(0, 0, FastExcel::DEF_COL_WIDTH, bold)
16
16
 
17
17
  price = workbook.number_format("#,##0.00")
@@ -35,43 +35,141 @@ See [more examples](https://github.com/Paxa/fast_excel/tree/master/examples)
35
35
 
36
36
  This repository and gem contain sources of [libxlsxwriter](https://github.com/jmcnamara/libxlsxwriter)
37
37
 
38
- ## Benchmarks
38
+ ## Install
39
39
 
40
- 1000 rows:
40
+ ```ruby
41
+ # Gemfile
42
+ gem 'fast_excel'
41
43
  ```
42
- Comparison:
43
- FastExcel: 31.7 i/s
44
- Axlsx: 8.0 i/s - 3.98x slower
45
- write_xlsx: 6.9 i/s - 4.62x slower
44
+ Or
45
+ ```
46
+ gem install fast_excel
46
47
  ```
47
48
 
48
- 20000 rows:
49
+
50
+
51
+ ### Create Document
52
+ ```ruby
53
+ workbook = FastExcel.open # creates tmp file
54
+ # ...
55
+ send_data(workbook.read_string, filename: "table.xlsx") # read tmp file and delete it
49
56
  ```
50
- Comparison:
51
- FastExcel: 1.4 i/s
52
- Axlsx: 0.4 i/s - 3.46x slower
53
- write_xlsx: 0.1 i/s - 17.04x slower
57
+
58
+ Also can use `workbook.remove_tmp_file` to delete tmp file manually
59
+
60
+
61
+ **Constant memory mode**: saves each row to disk, good for really big files but can not change previous lines that already saved
62
+ ```ruby
63
+ workbook = FastExcel.open(constant_memory: true)
54
64
  ```
55
65
 
56
- Max memory usage, generating 100k rows:
66
+ **Save to file**
67
+ ```ruby
68
+ workbook = FastExcel.open("my_dinner.xlsx")
57
69
  ```
58
- FastExcel - 20 MB
59
- Axlsx - 60 MB
60
- write_xlsx - 100 MB
70
+
71
+ ### Write Data
72
+ FastExcel will automatically detect data type and one of `write_number` or `write_datetime` or `write_formula` or `write_string` or `write_url`
73
+ ```ruby
74
+ workbook = FastExcel.open
75
+ worksheet = workbook.add_worksheet
76
+
77
+ # write specific type value value
78
+ worksheet.write_number(row = 0, col = 5, 1_234_567, format = nil)
79
+
80
+ # write value with type detection
81
+ worksheet.write_value(row = 0, col = 5, 1_234_567, format = nil)
82
+
83
+ # write row of values. format argument can be format object or array of format objects
84
+ worksheet.write_row(row = 1, ["strong", 123_456, Time.now], format = nil)
85
+
86
+ # write row to the bottom
87
+ worksheet.append_row(["strong", 123_456, Time.now], )
88
+
89
+ # shortcut for append_row()
90
+ worksheet << ["strong", 123_456, Time.now]
61
91
  ```
62
92
 
63
- ## Install
93
+ **Saving dates**: excel store dates as number of days since 1st January 1900, and FastExcel will make it for you.
64
94
 
95
+ To make saving of dates slightly faster can use `FastExcel.date_num` helper:
65
96
  ```ruby
66
- # Gemfile
67
- gem 'fast_excel'
97
+ date_format = workbook.number_format("[$-409]m/d/yy hh:mm;@")
98
+ worksheet.write_number(0, 0, FastExcel.date_num(Time.now, Time.zone.utc_offset), date_format)
68
99
  ```
69
- Or
100
+
101
+ **Formulas**: special type of value in excel
102
+ ```ruby
103
+ worksheet << [1, 2, 3, 4]
104
+ worksheet << [FastExcel::Formula.new("SUM(A1:D1)")] # A2 will be shown as 10
70
105
  ```
71
- gem install fast_excel
106
+
107
+ **URL**: Link to website or something else
108
+ ```ruby
109
+ url_format = workbook.add_format(underline: :underline_single, font_color: :blue) # format is optional
110
+ worksheet.append_row([
111
+ FastExcel::URL.new("https://github.com/Paxa/fast_excel"),
112
+ FastExcel::URL.new("postgres://localhost")
113
+ ], url_format)
114
+ # or
115
+ worksheet.write_url(0, 2, "https://github.com/Paxa/fast_excel", url_format)
116
+ ```
117
+
118
+
119
+ ### Data Formatting
120
+ ```ruby
121
+ format = worksheet.add_format(
122
+ bold: true,
123
+ italic: true,
124
+ font_outline: true,
125
+ font_shadow: true,
126
+ text_wrap: true,
127
+ font_strikeout: true,
128
+ shrink: true,
129
+ text_justlast: true,
130
+ font_size: 13, # default is 11, use 0 for user's default
131
+ font_name: "Arial", # default is Calibri, also accessible via font_family
132
+ font_color: :orange, # can use RGB hex as "#FF0000" or 0x00FF00 or color name as symbol or string
133
+ font_script: :font_subscript,
134
+ rotation: 10,
135
+ underline: :underline_single, # or :underline_double or :underline_single_accounting or :underline_double_accounting
136
+ indent: 1,
137
+ # border styles
138
+ border: :border_thin,
139
+ left: :medium,
140
+ top: :dashed,
141
+ right: :double,
142
+ bottom: :hair,
143
+ bottom_color: :alice_blue,
144
+ top_color: "#11ABCD",
145
+ # Align
146
+ align: {h: :align_center, v: :align_vertical_center},
147
+ num_format: "#,##0.00"
148
+ )
149
+ ```
150
+
151
+ **Shortcuts**:
152
+ ```ruby
153
+ workbook.bold_format # bold text
154
+ workbook.number_format("[$-409]m/d/yy h:mm AM/PM;@") # format for date
72
155
  ```
73
156
 
74
- ## Column Auto Width
157
+ ### Set Column Width
158
+
159
+ ```ruby
160
+ worksheet.set_column(start_col, end_col, width = nil, format = nil)
161
+ # or
162
+ worksheet.set_column_width(col, width = 60)
163
+ # or
164
+ worksheet.set_columns_width(start_col, end_col, width = 60)
165
+ ```
166
+
167
+ ### Set Row Height
168
+ ```ruby
169
+ worksheet.set_row(row_num = 0, height = 30, format = nil)
170
+ ```
171
+
172
+ ### Column Auto Width
75
173
 
76
174
  Column authwidth only works for string values, because numbers may have custom formatting
77
175
 
@@ -94,7 +192,7 @@ File.open('./some_file.xlsx', 'wb') {|f| f.write(content) }
94
192
  ![fast_excel_auto_width](https://user-images.githubusercontent.com/26019/51788441-ba981300-21b0-11e9-9611-54dda78effcd.png)
95
193
 
96
194
 
97
- ## API
195
+ ### API
98
196
 
99
197
  This gem is FFI binding for libxlsxwriter C library with some syntax sugar. All original functions is avaliable, for example:
100
198
 
@@ -106,17 +204,29 @@ worksheet.activate
106
204
 
107
205
  Full libxlsxwriter documentation: [http://libxlsxwriter.github.io/](http://libxlsxwriter.github.io/)
108
206
 
109
- Helper Methods:
110
-
111
- * `FastExcel.open(filename = nil, constant_memory: false, default_format: {})` - open new workbook, if `filename` is nil - it will create tmp file, `default_format` will be called with `workbook.default_format.set(...)`
112
- * `FastExcel.date_num(time, offset = nil)` - generate Excel's internal date value, number of days since 1900-Jan-01, works faster then creating `Libxlsxwriter::Datetime` struct. `offset` argument is number hours from UTC, e.g. `3.5`
113
- * `FastExcel.print_ffi_obj(object)` - print FFI object fields, just for debugging
114
- * `workbook.bold_cell_format` - shortcut for creating bold format
115
- * `workbook.number_format(num_format)` - create number or date format, for money usually: `"#,##0.00"`, for date: `"[$-409]m/d/yy h:mm AM/PM;@"`
116
- * `workbook.read_string` - close workbook, read file to string, delete file (only if tmp file)
117
- * `workbook.remove_tmp_file` - delete tmp file (only if tmp file)
118
- * `worksheet.write_row(row_num, array_of_mixed_value, formats = nil)` - write values one by one, detecting type automatically. `formats` can be array, or Format object or nil
119
- * `format.font_family` - alias for `format.font_name`
120
- * `workbook.default_format.font_size` - set it to 0 if you want to use default font size (that what user set in Excel settings)
121
- * `worksheet.write_row(num, values_array, formats = nil)` - Write row of values
122
- * `worksheet.append_row(values_array, formats = nil)` - Append row of values ot the bottom of worksheet
207
+ Generated rdoc: [rubydoc.info/github/Paxa/fast_excel](https://www.rubydoc.info/github/Paxa/fast_excel)
208
+
209
+ ## Benchmarks
210
+
211
+ 1000 rows:
212
+ ```
213
+ Comparison:
214
+ FastExcel: 31.7 i/s
215
+ Axlsx: 8.0 i/s - 3.98x slower
216
+ write_xlsx: 6.9 i/s - 4.62x slower
217
+ ```
218
+
219
+ 20000 rows:
220
+ ```
221
+ Comparison:
222
+ FastExcel: 1.4 i/s
223
+ Axlsx: 0.4 i/s - 3.46x slower
224
+ write_xlsx: 0.1 i/s - 17.04x slower
225
+ ```
226
+
227
+ Max memory usage, generating 100k rows:
228
+ ```
229
+ FastExcel - 20 MB
230
+ Axlsx - 60 MB
231
+ write_xlsx - 100 MB
232
+ ```