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.
- checksums.yaml +5 -5
- data/.dockerignore +2 -0
- data/.gitignore +7 -0
- data/.travis.yml +44 -0
- data/CHANGELOG.md +41 -1
- data/Dockerfile.test +16 -0
- data/Gemfile +5 -2
- data/Gemfile.lock +30 -23
- data/LICENSE +21 -0
- data/Makefile +13 -0
- data/README.md +177 -40
- data/Rakefile +16 -0
- data/appveyor.yml +25 -0
- data/benchmarks/1k_rows.rb +17 -4
- data/benchmarks/20k_rows.rb +4 -0
- data/benchmarks/auto_width.rb +37 -0
- data/benchmarks/init.rb +14 -2
- data/benchmarks/memory.rb +8 -0
- data/benchmarks/profiler.rb +27 -0
- data/benchmarks/write_value.rb +62 -0
- data/examples/example.rb +3 -4
- data/examples/example_align.rb +23 -0
- data/examples/example_auto_width.rb +26 -0
- data/examples/example_colors.rb +37 -0
- data/examples/example_filters.rb +36 -0
- data/examples/example_formula.rb +1 -5
- data/examples/example_hyperlink.rb +20 -0
- data/examples/example_image.rb +1 -1
- data/examples/example_styles.rb +27 -0
- data/examples/logo.png +0 -0
- data/ext/fast_excel/extconf.rb +3 -0
- data/ext/fast_excel/text_width_ext.c +460 -0
- data/fast_excel.gemspec +2 -3
- data/letters.html +114 -0
- data/lib/fast_excel.rb +455 -78
- data/lib/fast_excel/binding.rb +31 -21
- data/lib/fast_excel/binding/chart.rb +20 -1
- data/lib/fast_excel/binding/format.rb +11 -4
- data/lib/fast_excel/binding/workbook.rb +10 -2
- data/lib/fast_excel/binding/worksheet.rb +44 -27
- data/libxlsxwriter/.gitignore +1 -0
- data/libxlsxwriter/.indent.pro +8 -0
- data/libxlsxwriter/.travis.yml +12 -0
- data/libxlsxwriter/CMakeLists.txt +338 -0
- data/libxlsxwriter/CONTRIBUTING.md +1 -1
- data/libxlsxwriter/Changes.txt +162 -0
- data/libxlsxwriter/LICENSE.txt +65 -4
- data/libxlsxwriter/Makefile +33 -11
- data/libxlsxwriter/Readme.md +3 -1
- data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +2 -1
- data/libxlsxwriter/cocoapods/libxlsxwriter.modulemap +2 -2
- data/libxlsxwriter/include/xlsxwriter.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/app.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/chart.h +164 -13
- data/libxlsxwriter/include/xlsxwriter/chartsheet.h +544 -0
- data/libxlsxwriter/include/xlsxwriter/common.h +35 -6
- data/libxlsxwriter/include/xlsxwriter/content_types.h +5 -2
- data/libxlsxwriter/include/xlsxwriter/core.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/custom.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/drawing.h +3 -2
- data/libxlsxwriter/include/xlsxwriter/format.h +8 -8
- data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/packager.h +18 -8
- data/libxlsxwriter/include/xlsxwriter/relationships.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/shared_strings.h +5 -3
- data/libxlsxwriter/include/xlsxwriter/styles.h +10 -5
- data/libxlsxwriter/include/xlsxwriter/theme.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/utility.h +35 -5
- data/libxlsxwriter/include/xlsxwriter/workbook.h +234 -57
- data/libxlsxwriter/include/xlsxwriter/worksheet.h +780 -91
- data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +4 -2
- data/libxlsxwriter/libxlsxwriter.podspec +4 -2
- data/libxlsxwriter/src/Makefile +31 -6
- data/libxlsxwriter/src/app.c +2 -2
- data/libxlsxwriter/src/chart.c +116 -23
- data/libxlsxwriter/src/chartsheet.c +508 -0
- data/libxlsxwriter/src/content_types.c +12 -4
- data/libxlsxwriter/src/core.c +11 -11
- data/libxlsxwriter/src/custom.c +3 -3
- data/libxlsxwriter/src/drawing.c +114 -17
- data/libxlsxwriter/src/format.c +5 -5
- data/libxlsxwriter/src/hash_table.c +1 -1
- data/libxlsxwriter/src/packager.c +378 -61
- data/libxlsxwriter/src/relationships.c +2 -2
- data/libxlsxwriter/src/shared_strings.c +18 -4
- data/libxlsxwriter/src/styles.c +59 -12
- data/libxlsxwriter/src/theme.c +2 -2
- data/libxlsxwriter/src/utility.c +93 -6
- data/libxlsxwriter/src/workbook.c +379 -61
- data/libxlsxwriter/src/worksheet.c +1240 -174
- data/libxlsxwriter/src/xmlwriter.c +18 -9
- data/libxlsxwriter/third_party/minizip/Makefile +6 -1
- data/libxlsxwriter/third_party/minizip/ioapi.c +10 -0
- data/libxlsxwriter/third_party/minizip/zip.c +2 -0
- data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +2 -2
- data/libxlsxwriter/version.txt +1 -1
- data/test/auto_width_test.rb +19 -0
- data/test/date_test.rb +34 -0
- data/test/format_test.rb +179 -0
- data/test/reopen_test.rb +22 -0
- data/test/test_helper.rb +23 -4
- data/test/text_width_test.rb +80 -0
- data/test/tmpfile_test.rb +1 -0
- data/test/validations_test.rb +47 -0
- data/test/worksheet_test.rb +129 -0
- metadata +34 -5
data/test/reopen_test.rb
ADDED
|
@@ -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
|
data/test/test_helper.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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
|
data/test/tmpfile_test.rb
CHANGED
|
@@ -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.
|
|
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:
|
|
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
|
-
|
|
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
|
|
202
|
+
summary: Ultra Fast Excel Writer
|
|
174
203
|
test_files: []
|