fast_excel 0.2.1 → 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 (106) hide show
  1. checksums.yaml +5 -5
  2. data/.dockerignore +2 -0
  3. data/.gitignore +7 -0
  4. data/.travis.yml +44 -0
  5. data/CHANGELOG.md +41 -1
  6. data/Dockerfile.test +16 -0
  7. data/Gemfile +5 -2
  8. data/Gemfile.lock +30 -23
  9. data/LICENSE +21 -0
  10. data/Makefile +13 -0
  11. data/README.md +177 -40
  12. data/Rakefile +16 -0
  13. data/appveyor.yml +25 -0
  14. data/benchmarks/1k_rows.rb +17 -4
  15. data/benchmarks/20k_rows.rb +4 -0
  16. data/benchmarks/auto_width.rb +37 -0
  17. data/benchmarks/init.rb +14 -2
  18. data/benchmarks/memory.rb +8 -0
  19. data/benchmarks/profiler.rb +27 -0
  20. data/benchmarks/write_value.rb +62 -0
  21. data/examples/example.rb +3 -4
  22. data/examples/example_align.rb +23 -0
  23. data/examples/example_auto_width.rb +26 -0
  24. data/examples/example_colors.rb +37 -0
  25. data/examples/example_filters.rb +36 -0
  26. data/examples/example_formula.rb +1 -5
  27. data/examples/example_hyperlink.rb +20 -0
  28. data/examples/example_image.rb +1 -1
  29. data/examples/example_styles.rb +27 -0
  30. data/examples/logo.png +0 -0
  31. data/ext/fast_excel/extconf.rb +3 -0
  32. data/ext/fast_excel/text_width_ext.c +460 -0
  33. data/fast_excel.gemspec +2 -3
  34. data/letters.html +114 -0
  35. data/lib/fast_excel.rb +455 -78
  36. data/lib/fast_excel/binding.rb +31 -21
  37. data/lib/fast_excel/binding/chart.rb +20 -1
  38. data/lib/fast_excel/binding/format.rb +11 -4
  39. data/lib/fast_excel/binding/workbook.rb +10 -2
  40. data/lib/fast_excel/binding/worksheet.rb +44 -27
  41. data/libxlsxwriter/.gitignore +1 -0
  42. data/libxlsxwriter/.indent.pro +8 -0
  43. data/libxlsxwriter/.travis.yml +12 -0
  44. data/libxlsxwriter/CMakeLists.txt +338 -0
  45. data/libxlsxwriter/CONTRIBUTING.md +1 -1
  46. data/libxlsxwriter/Changes.txt +162 -0
  47. data/libxlsxwriter/LICENSE.txt +65 -4
  48. data/libxlsxwriter/Makefile +33 -11
  49. data/libxlsxwriter/Readme.md +3 -1
  50. data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +2 -1
  51. data/libxlsxwriter/cocoapods/libxlsxwriter.modulemap +2 -2
  52. data/libxlsxwriter/include/xlsxwriter.h +2 -2
  53. data/libxlsxwriter/include/xlsxwriter/app.h +2 -2
  54. data/libxlsxwriter/include/xlsxwriter/chart.h +164 -13
  55. data/libxlsxwriter/include/xlsxwriter/chartsheet.h +544 -0
  56. data/libxlsxwriter/include/xlsxwriter/common.h +35 -6
  57. data/libxlsxwriter/include/xlsxwriter/content_types.h +5 -2
  58. data/libxlsxwriter/include/xlsxwriter/core.h +2 -2
  59. data/libxlsxwriter/include/xlsxwriter/custom.h +2 -2
  60. data/libxlsxwriter/include/xlsxwriter/drawing.h +3 -2
  61. data/libxlsxwriter/include/xlsxwriter/format.h +8 -8
  62. data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
  63. data/libxlsxwriter/include/xlsxwriter/packager.h +18 -8
  64. data/libxlsxwriter/include/xlsxwriter/relationships.h +2 -2
  65. data/libxlsxwriter/include/xlsxwriter/shared_strings.h +5 -3
  66. data/libxlsxwriter/include/xlsxwriter/styles.h +10 -5
  67. data/libxlsxwriter/include/xlsxwriter/theme.h +2 -2
  68. data/libxlsxwriter/include/xlsxwriter/utility.h +35 -5
  69. data/libxlsxwriter/include/xlsxwriter/workbook.h +234 -57
  70. data/libxlsxwriter/include/xlsxwriter/worksheet.h +780 -91
  71. data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +4 -2
  72. data/libxlsxwriter/libxlsxwriter.podspec +4 -2
  73. data/libxlsxwriter/src/Makefile +31 -6
  74. data/libxlsxwriter/src/app.c +2 -2
  75. data/libxlsxwriter/src/chart.c +116 -23
  76. data/libxlsxwriter/src/chartsheet.c +508 -0
  77. data/libxlsxwriter/src/content_types.c +12 -4
  78. data/libxlsxwriter/src/core.c +11 -11
  79. data/libxlsxwriter/src/custom.c +3 -3
  80. data/libxlsxwriter/src/drawing.c +114 -17
  81. data/libxlsxwriter/src/format.c +5 -5
  82. data/libxlsxwriter/src/hash_table.c +1 -1
  83. data/libxlsxwriter/src/packager.c +378 -61
  84. data/libxlsxwriter/src/relationships.c +2 -2
  85. data/libxlsxwriter/src/shared_strings.c +18 -4
  86. data/libxlsxwriter/src/styles.c +59 -12
  87. data/libxlsxwriter/src/theme.c +2 -2
  88. data/libxlsxwriter/src/utility.c +93 -6
  89. data/libxlsxwriter/src/workbook.c +379 -61
  90. data/libxlsxwriter/src/worksheet.c +1240 -174
  91. data/libxlsxwriter/src/xmlwriter.c +18 -9
  92. data/libxlsxwriter/third_party/minizip/Makefile +6 -1
  93. data/libxlsxwriter/third_party/minizip/ioapi.c +10 -0
  94. data/libxlsxwriter/third_party/minizip/zip.c +2 -0
  95. data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +2 -2
  96. data/libxlsxwriter/version.txt +1 -1
  97. data/test/auto_width_test.rb +19 -0
  98. data/test/date_test.rb +34 -0
  99. data/test/format_test.rb +179 -0
  100. data/test/reopen_test.rb +22 -0
  101. data/test/test_helper.rb +23 -4
  102. data/test/text_width_test.rb +80 -0
  103. data/test/tmpfile_test.rb +1 -0
  104. data/test/validations_test.rb +47 -0
  105. data/test/worksheet_test.rb +129 -0
  106. metadata +34 -5
@@ -0,0 +1,22 @@
1
+ require_relative 'test_helper'
2
+
3
+ describe "FastExcel::Worksheet" do
4
+
5
+ it "should get_worksheet_by_name" do
6
+ workbook = FastExcel.open(constant_memory: false)
7
+ workbook.add_worksheet("Page1")
8
+
9
+ ws = workbook.get_worksheet_by_name("Page1")
10
+ ws.write_row(0, ['1'])
11
+
12
+ workbook.close
13
+
14
+ error = assert_raises do
15
+ FastExcel.open(workbook.filename, constant_memory: false)
16
+ end
17
+
18
+ assert_equal(error.class, ArgumentError)
19
+ assert_equal(error.message, "File '#{workbook.filename}' already exists. FastExcel can not open existing files, only create new files")
20
+ end
21
+
22
+ end
@@ -1,6 +1,7 @@
1
1
  require 'bundler/setup'
2
2
  require 'minitest/autorun'
3
3
  require "minitest/reporters"
4
+ require 'pp'
4
5
 
5
6
  ##Encoding.default_external = Encoding::UTF_8
6
7
  ##Encoding.default_internal = Encoding::UTF_8
@@ -20,9 +21,13 @@ ensure
20
21
  File.delete(file_path)
21
22
  end
22
23
 
24
+ def get_arrays(workbook)
25
+ workbook.close
26
+ parse_xlsx_as_matrix(workbook.filename)
27
+ end
28
+
23
29
  def parse_xlsx_as_array(file_path)
24
- excel = parse_xlsx(file_path)
25
- data = excel.to_matrix.to_a
30
+ data = parse_xlsx_as_matrix(file_path)
26
31
  headers = data.shift
27
32
 
28
33
  data.map do |row|
@@ -32,5 +37,19 @@ end
32
37
 
33
38
  def parse_xlsx_as_matrix(file_path)
34
39
  excel = parse_xlsx(file_path)
35
- excel.to_matrix.to_a
36
- end
40
+
41
+ sheet = excel.sheet(0)
42
+
43
+ rows = []
44
+ if sheet.last_row
45
+ 1.upto(sheet.last_row) do |row_number|
46
+ row = 1.upto(sheet.last_column).map do |col|
47
+ sheet.cell(row_number, col)
48
+ end
49
+
50
+ rows << row
51
+ end
52
+ end
53
+
54
+ return rows
55
+ end
@@ -0,0 +1,80 @@
1
+ require_relative 'test_helper'
2
+
3
+
4
+ describe "FastExcel Arial text_width" do
5
+
6
+ before do
7
+ skip "Use basic width calc for now"
8
+ end
9
+
10
+ it "should calculate width for character" do
11
+ assert_in_delta(FastExcel.arial_text_width('a'), 55.61, 0.1)
12
+ end
13
+
14
+ it "should calculate width with kerning" do
15
+ assert_in_delta(FastExcel.arial_text_width('A'), 66.69, 0.1)
16
+ assert_in_delta(FastExcel.arial_text_width('V'), 66.69, 0.1)
17
+
18
+ assert_in_delta(FastExcel.arial_text_width('AV'), 125.97, 0.1)
19
+
20
+ assert_in_delta(FastExcel.arial_text_width('11'), 103.80, 0.1)
21
+ end
22
+
23
+ it "should skip system characters" do
24
+ assert_in_delta(FastExcel.arial_text_width(10.chr), 0.0)
25
+ end
26
+
27
+ it "should handle multiline text" do
28
+ assert_in_delta(FastExcel.arial_text_width("More\nThen\nOne Line"), 405.85, 0.1)
29
+ end
30
+ end
31
+
32
+ describe "FastExcel Calibri text_width" do
33
+
34
+ before do
35
+ skip "Use basic width calc for now"
36
+ end
37
+
38
+ it "should calculate width for character" do
39
+ assert_in_delta(FastExcel.calibri_text_width('a'), 47.90, 0.1)
40
+ end
41
+
42
+ it "should calculate width with kerning" do
43
+ assert_in_delta(FastExcel.calibri_text_width('A'), 57.86, 0.1)
44
+ assert_in_delta(FastExcel.calibri_text_width('V'), 56.73, 0.1)
45
+
46
+ assert_in_delta(FastExcel.calibri_text_width('AV'), 110.25, 0.1)
47
+
48
+ assert_in_delta(FastExcel.calibri_text_width('11'), 101.36, 0.1)
49
+ end
50
+
51
+ it "should skip system characters" do
52
+ assert_in_delta(FastExcel.calibri_text_width(10.chr), 0.0)
53
+ end
54
+
55
+ end
56
+
57
+ describe "FastExcel Times New Roman text_width" do
58
+
59
+ before do
60
+ skip "Use basic width calc for now"
61
+ end
62
+
63
+ it "should calculate width for character" do
64
+ assert_in_delta(FastExcel.times_new_roman_text_width('a'), 44.38, 0.1)
65
+ end
66
+
67
+ it "should calculate width with kerning" do
68
+ assert_in_delta(FastExcel.times_new_roman_text_width('A'), 72.21, 0.1)
69
+ assert_in_delta(FastExcel.times_new_roman_text_width('V'), 72.21, 0.1)
70
+
71
+ assert_in_delta(FastExcel.times_new_roman_text_width('AV'), 131.54, 0.1)
72
+
73
+ assert_in_delta(FastExcel.times_new_roman_text_width('11'), 96.28, 0.1)
74
+ end
75
+
76
+ it "should skip system characters" do
77
+ assert_in_delta(FastExcel.times_new_roman_text_width(10.chr), 0.0)
78
+ end
79
+
80
+ end
@@ -17,6 +17,7 @@ describe "FastExcel" do
17
17
  workbook.read_string
18
18
 
19
19
  refute(File.exist?(workbook.filename))
20
+ refute(File.exist?(File.dirname(workbook.filename)))
20
21
  refute(workbook.is_open)
21
22
  end
22
23
 
@@ -0,0 +1,47 @@
1
+ require_relative 'test_helper'
2
+
3
+ describe "FastExcel validations" do
4
+
5
+ it "should raise error when duplicate sheet name" do
6
+ workbook = FastExcel.open(constant_memory: true)
7
+
8
+ workbook.add_worksheet("Payments Report")
9
+ error = assert_raises do
10
+ workbook.add_worksheet("Payments Report")
11
+ end
12
+
13
+ assert_equal(ArgumentError, error.class)
14
+ assert_equal("Worksheet name 'Payments Report' is already in use", error.message)
15
+ end
16
+
17
+ it "should not raise error when worksheet name is null" do
18
+ workbook = FastExcel.open(constant_memory: true)
19
+
20
+ ws1 = workbook.add_worksheet()
21
+ ws2 = workbook.add_worksheet()
22
+ ws2.write_value(0, 2, "aaa")
23
+
24
+ assert_equal("Sheet1", ws1[:name])
25
+ assert_equal("Sheet2", ws2[:name])
26
+ end
27
+
28
+ it "should raise error when the sheet name exceeds maximum length" do
29
+ workbook = FastExcel.open(constant_memory: true)
30
+
31
+ error = assert_raises do
32
+ workbook.add_worksheet("ABCDEFGHIJKLMNOPQRSTUVWXYZ012345")
33
+ end
34
+
35
+ assert_equal(ArgumentError, error.class)
36
+ assert_equal("Worksheet name 'ABCDEFGHIJKLMNOPQRSTUVWXYZ012345' exceeds Excel's limit of 31 characters", error.message)
37
+ end
38
+
39
+ it "should not raise error when the sheet name is at maximum length" do
40
+ workbook = FastExcel.open(constant_memory: true)
41
+
42
+ worksheet = workbook.add_worksheet("ABCDEFGHIJKLMNOPQRSTUVWXYZ01234")
43
+ worksheet.append_row(["aaa", "bbb", "ccc"])
44
+
45
+ assert_equal("ABCDEFGHIJKLMNOPQRSTUVWXYZ01234", worksheet[:name])
46
+ end
47
+ end
@@ -0,0 +1,129 @@
1
+ require_relative 'test_helper'
2
+
3
+ describe "FastExcel::WorksheetExt append_row" do
4
+
5
+ before do
6
+ @workbook = FastExcel.open(constant_memory: false)
7
+ @worksheet = @workbook.add_worksheet
8
+ end
9
+
10
+ it "should have last_row_number = -1" do
11
+ assert_equal(-1, @worksheet.last_row_number)
12
+ end
13
+
14
+ it "should write_value and update last_row_number" do
15
+ @worksheet.write_value(0, 2, "aaa")
16
+ assert_equal(0, @worksheet.last_row_number)
17
+ assert_equal([[nil, nil, "aaa"]], get_arrays(@workbook))
18
+ end
19
+
20
+ it "should append row and update last_row_number" do
21
+ @worksheet.append_row(["aaa", "bbb", "ccc"])
22
+ @worksheet.append_row(["ddd", "eee", "fff"])
23
+
24
+ assert_equal(1, @worksheet.last_row_number)
25
+ assert_equal([["aaa", "bbb", "ccc"], ["ddd", "eee", "fff"]], get_arrays(@workbook))
26
+ end
27
+
28
+ it "should write_row then append and update last_row_number" do
29
+ @worksheet.write_row(3, ["aaa", "bbb", "ccc"])
30
+ @worksheet.append_row(["ddd", "eee", "fff"])
31
+
32
+ assert_equal(4, @worksheet.last_row_number)
33
+ assert_equal(
34
+ [
35
+ [nil, nil, nil],
36
+ [nil, nil, nil],
37
+ [nil, nil, nil],
38
+ ["aaa", "bbb", "ccc"],
39
+ ["ddd", "eee", "fff"]
40
+ ],
41
+ get_arrays(@workbook)
42
+ )
43
+ end
44
+
45
+ it "should not reduce last_row_number" do
46
+ @worksheet.append_row(["aaa", "bbb", "ccc"])
47
+ @worksheet.append_row(["ddd", "eee", "fff"])
48
+ @worksheet.write_value(0, 4, "foo")
49
+ @worksheet.append_row(["111", "222", "333"])
50
+
51
+ assert_equal(2, @worksheet.last_row_number)
52
+ assert_equal(
53
+ [
54
+ ["aaa", "bbb", "ccc", nil, "foo"],
55
+ ["ddd", "eee", "fff", nil, nil],
56
+ ["111", "222", "333", nil, nil]
57
+ ],
58
+ get_arrays(@workbook)
59
+ )
60
+ end
61
+
62
+ it "should not allow to write rows that already saved" do
63
+ @workbook = FastExcel.open(constant_memory: true)
64
+ @worksheet = @workbook.add_worksheet
65
+
66
+ @worksheet.append_row(["aaa", "bbb", "ccc"])
67
+ @worksheet.append_row(["ddd", "eee", "fff"])
68
+
69
+ error = assert_raises(ArgumentError) do
70
+ @worksheet.write_value(0, 4, "foo")
71
+ end
72
+
73
+ assert_equal("Can not write to saved row in constant_memory mode (attempted row: 0, last saved row: 1)", error.message)
74
+ end
75
+
76
+ it "should write bigdecimal as a number" do
77
+ require 'bigdecimal'
78
+
79
+ @workbook = FastExcel.open(constant_memory: true)
80
+ @worksheet = @workbook.add_worksheet
81
+
82
+ @worksheet.append_row([BigDecimal("0.1234")])
83
+
84
+ assert_equal([[0.1234]], get_arrays(@workbook))
85
+ end
86
+
87
+ it "should set name correctly" do
88
+ workbook = FastExcel.open(constant_memory: true)
89
+ ws1 = workbook.add_worksheet("foo")
90
+ ws2 = workbook.add_worksheet("")
91
+
92
+ assert_equal("foo", ws1[:name])
93
+ assert_equal("", ws2[:name])
94
+ end
95
+
96
+ it "should map fields correctly" do
97
+ workbook = FastExcel.open(constant_memory: true)
98
+
99
+ ws = workbook.add_worksheet
100
+ ws.set_right_to_left
101
+ assert_equal(ws[:right_to_left], 1)
102
+
103
+ ws = workbook.add_worksheet
104
+ ws.center_vertically
105
+ assert_equal(ws[:print_options_changed], 1)
106
+ assert_equal(ws[:vcenter], 1)
107
+
108
+ ws = workbook.add_worksheet
109
+ ws.print_row_col_headers
110
+ assert_equal(ws[:print_headers], 1)
111
+ assert_equal(ws[:print_options_changed], 1)
112
+
113
+ ws = workbook.add_worksheet
114
+ ws.set_margins(1.5, 2.5, 3.5, 4.5)
115
+ assert_equal(ws[:margin_left], 1.5)
116
+ assert_equal(ws[:margin_right], 2.5)
117
+ assert_equal(ws[:margin_top], 3.5)
118
+ assert_equal(ws[:margin_bottom], 4.5)
119
+
120
+
121
+ breaks = [20, 40, 60, 20, 0]
122
+ FFI::MemoryPointer.new(:uint16, breaks.size) do |buffer|
123
+ buffer.write_array_of_uint16(breaks)
124
+ ws.set_v_pagebreaks(buffer)
125
+ end
126
+
127
+ assert_equal(ws[:vbreaks_count], 4)
128
+ end
129
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_excel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Evstigneev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-20 00:00:00.000000000 Z
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -38,23 +38,41 @@ extensions:
38
38
  - extconf.rb
39
39
  extra_rdoc_files: []
40
40
  files:
41
+ - ".dockerignore"
41
42
  - ".gitignore"
43
+ - ".travis.yml"
42
44
  - CHANGELOG.md
45
+ - Dockerfile.test
43
46
  - Gemfile
44
47
  - Gemfile.lock
48
+ - LICENSE
45
49
  - Makefile
46
50
  - README.md
47
51
  - Rakefile
52
+ - appveyor.yml
48
53
  - benchmarks/1k_rows.rb
49
54
  - benchmarks/20k_rows.rb
55
+ - benchmarks/auto_width.rb
50
56
  - benchmarks/init.rb
51
57
  - benchmarks/memory.rb
58
+ - benchmarks/profiler.rb
59
+ - benchmarks/write_value.rb
52
60
  - examples/example.rb
61
+ - examples/example_align.rb
62
+ - examples/example_auto_width.rb
53
63
  - examples/example_chart.rb
64
+ - examples/example_colors.rb
65
+ - examples/example_filters.rb
54
66
  - examples/example_formula.rb
67
+ - examples/example_hyperlink.rb
55
68
  - examples/example_image.rb
69
+ - examples/example_styles.rb
70
+ - examples/logo.png
71
+ - ext/fast_excel/extconf.rb
72
+ - ext/fast_excel/text_width_ext.c
56
73
  - extconf.rb
57
74
  - fast_excel.gemspec
75
+ - letters.html
58
76
  - lib/fast_excel.rb
59
77
  - lib/fast_excel/binding.rb
60
78
  - lib/fast_excel/binding/chart.rb
@@ -64,16 +82,21 @@ files:
64
82
  - libxlsxwriter/.gitignore
65
83
  - libxlsxwriter/.indent.pro
66
84
  - libxlsxwriter/.travis.yml
85
+ - libxlsxwriter/CMakeLists.txt
67
86
  - libxlsxwriter/CONTRIBUTING.md
68
87
  - libxlsxwriter/Changes.txt
69
88
  - libxlsxwriter/LICENSE.txt
70
89
  - libxlsxwriter/Makefile
71
90
  - libxlsxwriter/Readme.md
91
+ - libxlsxwriter/cmake/FindMINIZIP.cmake
92
+ - libxlsxwriter/cmake/FindPackage.cmake
93
+ - libxlsxwriter/cmake/i686-toolchain.cmake
72
94
  - libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h
73
95
  - libxlsxwriter/cocoapods/libxlsxwriter.modulemap
74
96
  - libxlsxwriter/include/xlsxwriter.h
75
97
  - libxlsxwriter/include/xlsxwriter/app.h
76
98
  - libxlsxwriter/include/xlsxwriter/chart.h
99
+ - libxlsxwriter/include/xlsxwriter/chartsheet.h
77
100
  - libxlsxwriter/include/xlsxwriter/common.h
78
101
  - libxlsxwriter/include/xlsxwriter/content_types.h
79
102
  - libxlsxwriter/include/xlsxwriter/core.h
@@ -100,6 +123,7 @@ files:
100
123
  - libxlsxwriter/src/Makefile
101
124
  - libxlsxwriter/src/app.c
102
125
  - libxlsxwriter/src/chart.c
126
+ - libxlsxwriter/src/chartsheet.c
103
127
  - libxlsxwriter/src/content_types.c
104
128
  - libxlsxwriter/src/core.c
105
129
  - libxlsxwriter/src/custom.c
@@ -143,10 +167,16 @@ files:
143
167
  - libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c
144
168
  - libxlsxwriter/third_party/tmpfileplus/tmpfileplus.h
145
169
  - libxlsxwriter/version.txt
170
+ - test/auto_width_test.rb
146
171
  - test/date_test.rb
147
172
  - test/default_format_test.rb
173
+ - test/format_test.rb
174
+ - test/reopen_test.rb
148
175
  - test/test_helper.rb
176
+ - test/text_width_test.rb
149
177
  - test/tmpfile_test.rb
178
+ - test/validations_test.rb
179
+ - test/worksheet_test.rb
150
180
  homepage: https://github.com/paxa/fast_excel
151
181
  licenses:
152
182
  - MIT
@@ -166,9 +196,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
196
  - !ruby/object:Gem::Version
167
197
  version: '0'
168
198
  requirements: []
169
- rubyforge_project:
170
- rubygems_version: 2.6.8
199
+ rubygems_version: 3.0.6
171
200
  signing_key:
172
201
  specification_version: 4
173
- summary: Ultra Fast Excel Writter
202
+ summary: Ultra Fast Excel Writer
174
203
  test_files: []