write_xlsx 0.89.0 → 0.90.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 +4 -4
- data/Changes +13 -0
- data/README.md +1 -1
- data/lib/write_xlsx/package/core.rb +8 -6
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +9 -1
- data/lib/write_xlsx/worksheet/hyperlink.rb +4 -13
- data/test/regression/test_hyperlink27.rb +24 -0
- data/test/regression/test_utf8_11.rb +23 -0
- data/test/regression/xlsx_files/hyperlink27.xlsx +0 -0
- data/test/regression/xlsx_files/utf8_11.xlsx +0 -0
- data/test/workbook/test_worksheet_by_name.rb +35 -0
- data/test/worksheet/test_write_hyperlink.rb +0 -7
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94c163c93be013a57cc4a4edba4cea1ac35f91ecbed56443d535fa1d6e1a464f
|
4
|
+
data.tar.gz: 29fecf270f9b3382e0adae5f9f8ffd3b15ca97a84fc9da8bc24d0402de9a7ce7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da03548ba5d54019f9a69b2aa6ca70042b4d27824d784996ebdd7109f8c54626609f007d099acffb8a0d09448d5fdd2ea49e491e729b2b075d2e142fd0b36dc7
|
7
|
+
data.tar.gz: ba23f9b7be254784821b0bae59134bfa53a1cb2afa22e21576a054c718532f34753701d001d46f52871d770db0af4a6027705c22d28c18f658eb082b49172eeb
|
data/Changes
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
Change history of write_xlsx rubygem.
|
2
2
|
|
3
|
+
2020-12-28 v0.90.0
|
4
|
+
|
5
|
+
Added worksheet_by_name() workbook method to retrieve a worksheet
|
6
|
+
in a workbook by name.
|
7
|
+
|
8
|
+
Fixed issue where internal file creation and modification dates where
|
9
|
+
in the local timezone instead of UTC.
|
10
|
+
|
11
|
+
Fixed issue with "external:" urls with space in sheetname.
|
12
|
+
|
13
|
+
Fixed issue where Unicode full-width number strings were treated as
|
14
|
+
numbers in write().
|
15
|
+
|
3
16
|
2020-12-27 v0.89.0
|
4
17
|
|
5
18
|
Added write_boolean() worksheet method to write Excel boolean values.
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
gem to create a new file in the Excel 2007+ XLSX format, and you can use the
|
7
7
|
same interface as writeexcel gem. write_xlsx is converted from Perl's module
|
8
|
-
[Excel::Writer::XLSX-0.
|
8
|
+
[Excel::Writer::XLSX-0.90](https://github.com/jmcnamara/excel-writer-xlsx) .
|
9
9
|
|
10
10
|
## Description
|
11
11
|
|
@@ -14,7 +14,7 @@ class Core
|
|
14
14
|
def initialize
|
15
15
|
@writer = Package::XMLWriterSimple.new
|
16
16
|
@properties = {}
|
17
|
-
@
|
17
|
+
@createtime = [Time.now.gmtime]
|
18
18
|
end
|
19
19
|
|
20
20
|
def set_xml_writer(filename)
|
@@ -47,12 +47,14 @@ def write_cp_core_properties_base
|
|
47
47
|
end
|
48
48
|
|
49
49
|
#
|
50
|
-
# Convert a localtime() date to a ISO 8601 style
|
50
|
+
# Convert a gmtime/localtime() date to a ISO 8601 style
|
51
|
+
# "2010-01-01T00:00:00Z" date. Excel always treats this as
|
52
|
+
# a utc date/time.
|
51
53
|
#
|
52
|
-
def
|
53
|
-
|
54
|
+
def datetime_to_iso8601_date(gm_time = nil)
|
55
|
+
gm_time ||= Time.now.gmtime
|
54
56
|
|
55
|
-
|
57
|
+
gm_time.strftime('%Y-%m-%dT%H:%M:%SZ')
|
56
58
|
end
|
57
59
|
|
58
60
|
#
|
@@ -109,7 +111,7 @@ def write_dcterms(tag)
|
|
109
111
|
end
|
110
112
|
|
111
113
|
def dcterms_date
|
112
|
-
|
114
|
+
datetime_to_iso8601_date(@properties[:created])
|
113
115
|
end
|
114
116
|
|
115
117
|
#
|
data/lib/write_xlsx/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
WriteXLSX_VERSION = "0.
|
1
|
+
WriteXLSX_VERSION = "0.90.0"
|
data/lib/write_xlsx/workbook.rb
CHANGED
@@ -203,6 +203,14 @@ def sheets(*args)
|
|
203
203
|
end
|
204
204
|
end
|
205
205
|
|
206
|
+
#
|
207
|
+
# Return a worksheet object in the workbook using the sheetname.
|
208
|
+
#
|
209
|
+
def worksheet_by_name(sheetname = nil)
|
210
|
+
sheets.select { |s| s.name == sheetname }.first
|
211
|
+
end
|
212
|
+
alias get_worksheet_by_name worksheet_by_name
|
213
|
+
|
206
214
|
#
|
207
215
|
# Set the date system: false = 1900 (the default), true = 1904
|
208
216
|
#
|
@@ -806,7 +814,7 @@ def set_properties(params)
|
|
806
814
|
end
|
807
815
|
|
808
816
|
# Set the creation time unless specified by the user.
|
809
|
-
params[:created] = @
|
817
|
+
params[:created] = @createtime unless params.has_key?(:created)
|
810
818
|
|
811
819
|
@doc_properties = params.dup
|
812
820
|
end
|
@@ -27,13 +27,7 @@ def initialize(url, str, tip)
|
|
27
27
|
normalized_str = str.sub(/^mailto:/, '')
|
28
28
|
|
29
29
|
# Split url into the link and optional anchor/location.
|
30
|
-
url,
|
31
|
-
url ||= ''
|
32
|
-
if anchors.empty?
|
33
|
-
@url_str = nil
|
34
|
-
else
|
35
|
-
@url_str = anchors.join('#')
|
36
|
-
end
|
30
|
+
url, @url_str = url.split(/#/, 2)
|
37
31
|
|
38
32
|
# Escape URL unless it looks already escaped.
|
39
33
|
url = escape_url(url)
|
@@ -135,15 +129,12 @@ def initialize(url, str, tip)
|
|
135
129
|
# Strip the mailto header.
|
136
130
|
str.sub!(/^mailto:/, '')
|
137
131
|
|
132
|
+
# Split url into the link and optional anchor/location.
|
133
|
+
url, url_str = url.split(/#/, 2)
|
134
|
+
|
138
135
|
# Escape URL unless it looks already escaped.
|
139
136
|
url = escape_url(url)
|
140
137
|
|
141
|
-
# External Workbook links need to be modified into the right format.
|
142
|
-
# The URL will look something like 'c:\temp\file.xlsx#Sheet!A1'.
|
143
|
-
# We need the part to the left of the # as the URL and the part to
|
144
|
-
# the right as the "location" string (if it exists).
|
145
|
-
url, url_str = url.split(/#/)
|
146
|
-
|
147
138
|
# Add the file:/// URI to the url if non-local.
|
148
139
|
if url =~ %r![:]! || # Windows style "C:/" link.
|
149
140
|
url =~ %r!^\\\\! # Network share.
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionHyperlink27 < Minitest::Test
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
@tempfile.close(true) if @tempfile
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_hyperlink27
|
14
|
+
@xlsx = 'hyperlink27.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@io)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.write_url('A1', %q(external:\\\\Vboxsvr\share\foo bar.xlsx#'Some Sheet'!A1))
|
19
|
+
|
20
|
+
workbook.close
|
21
|
+
|
22
|
+
compare_for_regression
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionUtf8_11 < Minitest::Test
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
@tempfile.close(true)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_utf8_11
|
14
|
+
@xlsx = 'utf8_11.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@io)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
|
18
|
+
worksheet.write( 'A1', '12345' )
|
19
|
+
|
20
|
+
workbook.close
|
21
|
+
compare_for_regression
|
22
|
+
end
|
23
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestWorksheeByName < Minitest::Test
|
5
|
+
def test_worksheet_by_name
|
6
|
+
io = StringIO.new
|
7
|
+
workbook = WriteXLSX.new(io)
|
8
|
+
|
9
|
+
# Test a valid explicit name.
|
10
|
+
expected = workbook.add_worksheet
|
11
|
+
result = workbook.worksheet_by_name('Sheet1')
|
12
|
+
assert_equal(expected, result)
|
13
|
+
result = workbook.get_worksheet_by_name('Sheet1')
|
14
|
+
assert_equal(expected, result)
|
15
|
+
|
16
|
+
# Test a valid explicit name.
|
17
|
+
expected = workbook.add_worksheet('Sheet 2')
|
18
|
+
result = workbook.worksheet_by_name('Sheet 2')
|
19
|
+
assert_equal(expected, result)
|
20
|
+
result = workbook.get_worksheet_by_name('Sheet 2')
|
21
|
+
assert_equal(expected, result)
|
22
|
+
|
23
|
+
# Test an invalid name.
|
24
|
+
result = workbook.worksheet_by_name('Sheet3')
|
25
|
+
assert_nil(result)
|
26
|
+
result = workbook.get_worksheet_by_name('Sheet3')
|
27
|
+
assert_nil(result)
|
28
|
+
|
29
|
+
# Test an invalid name.
|
30
|
+
result = workbook.worksheet_by_name()
|
31
|
+
assert_nil(result)
|
32
|
+
result = workbook.get_worksheet_by_name()
|
33
|
+
assert_nil(result)
|
34
|
+
end
|
35
|
+
end
|
@@ -9,13 +9,6 @@ def setup
|
|
9
9
|
@worksheet = @workbook.add_worksheet('')
|
10
10
|
end
|
11
11
|
|
12
|
-
def test_attributes
|
13
|
-
hyperlink = Writexlsx::Worksheet::Hyperlink.factory('')
|
14
|
-
result = hyperlink.attributes(0, 0, 1)
|
15
|
-
expected = [ ['ref', 'A1'], ['r:id', 'rId1']]
|
16
|
-
assert_equal(expected, result)
|
17
|
-
end
|
18
|
-
|
19
12
|
def test_write_hyperlink_internal_sheet2
|
20
13
|
hyperlink = Writexlsx::Worksheet::Hyperlink.factory('internal:Sheet2!A1', 'Sheet2!A1')
|
21
14
|
result = hyperlink.attributes(0, 0)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: write_xlsx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.90.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hideo NAKAMURA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-12-
|
11
|
+
date: 2020-12-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -851,6 +851,7 @@ files:
|
|
851
851
|
- test/regression/test_hyperlink24.rb
|
852
852
|
- test/regression/test_hyperlink25.rb
|
853
853
|
- test/regression/test_hyperlink26.rb
|
854
|
+
- test/regression/test_hyperlink27.rb
|
854
855
|
- test/regression/test_image01.rb
|
855
856
|
- test/regression/test_image02.rb
|
856
857
|
- test/regression/test_image03.rb
|
@@ -1027,6 +1028,7 @@ files:
|
|
1027
1028
|
- test/regression/test_utf8_08.rb
|
1028
1029
|
- test/regression/test_utf8_09.rb
|
1029
1030
|
- test/regression/test_utf8_10.rb
|
1031
|
+
- test/regression/test_utf8_11.rb
|
1030
1032
|
- test/regression/test_vml01.rb
|
1031
1033
|
- test/regression/test_vml02.rb
|
1032
1034
|
- test/regression/test_vml03.rb
|
@@ -1472,6 +1474,7 @@ files:
|
|
1472
1474
|
- test/regression/xlsx_files/hyperlink24.xlsx
|
1473
1475
|
- test/regression/xlsx_files/hyperlink25.xlsx
|
1474
1476
|
- test/regression/xlsx_files/hyperlink26.xlsx
|
1477
|
+
- test/regression/xlsx_files/hyperlink27.xlsx
|
1475
1478
|
- test/regression/xlsx_files/image01.xlsx
|
1476
1479
|
- test/regression/xlsx_files/image02.xlsx
|
1477
1480
|
- test/regression/xlsx_files/image03.xlsx
|
@@ -1649,6 +1652,7 @@ files:
|
|
1649
1652
|
- test/regression/xlsx_files/utf8_08.xlsx
|
1650
1653
|
- test/regression/xlsx_files/utf8_09.xlsx
|
1651
1654
|
- test/regression/xlsx_files/utf8_10.xlsx
|
1655
|
+
- test/regression/xlsx_files/utf8_11.xlsx
|
1652
1656
|
- test/regression/xlsx_files/vbaProject01.bin
|
1653
1657
|
- test/regression/xlsx_files/vbaProject02.bin
|
1654
1658
|
- test/regression/xlsx_files/vml01.xlsx
|
@@ -1668,6 +1672,7 @@ files:
|
|
1668
1672
|
- test/workbook/test_workbook_01.rb
|
1669
1673
|
- test/workbook/test_workbook_02.rb
|
1670
1674
|
- test/workbook/test_workbook_03.rb
|
1675
|
+
- test/workbook/test_worksheet_by_name.rb
|
1671
1676
|
- test/workbook/test_write_calc_pr.rb
|
1672
1677
|
- test/workbook/test_write_defined_name.rb
|
1673
1678
|
- test/workbook/test_write_defined_names.rb
|
@@ -2439,6 +2444,7 @@ test_files:
|
|
2439
2444
|
- test/regression/test_hyperlink24.rb
|
2440
2445
|
- test/regression/test_hyperlink25.rb
|
2441
2446
|
- test/regression/test_hyperlink26.rb
|
2447
|
+
- test/regression/test_hyperlink27.rb
|
2442
2448
|
- test/regression/test_image01.rb
|
2443
2449
|
- test/regression/test_image02.rb
|
2444
2450
|
- test/regression/test_image03.rb
|
@@ -2615,6 +2621,7 @@ test_files:
|
|
2615
2621
|
- test/regression/test_utf8_08.rb
|
2616
2622
|
- test/regression/test_utf8_09.rb
|
2617
2623
|
- test/regression/test_utf8_10.rb
|
2624
|
+
- test/regression/test_utf8_11.rb
|
2618
2625
|
- test/regression/test_vml01.rb
|
2619
2626
|
- test/regression/test_vml02.rb
|
2620
2627
|
- test/regression/test_vml03.rb
|
@@ -3060,6 +3067,7 @@ test_files:
|
|
3060
3067
|
- test/regression/xlsx_files/hyperlink24.xlsx
|
3061
3068
|
- test/regression/xlsx_files/hyperlink25.xlsx
|
3062
3069
|
- test/regression/xlsx_files/hyperlink26.xlsx
|
3070
|
+
- test/regression/xlsx_files/hyperlink27.xlsx
|
3063
3071
|
- test/regression/xlsx_files/image01.xlsx
|
3064
3072
|
- test/regression/xlsx_files/image02.xlsx
|
3065
3073
|
- test/regression/xlsx_files/image03.xlsx
|
@@ -3237,6 +3245,7 @@ test_files:
|
|
3237
3245
|
- test/regression/xlsx_files/utf8_08.xlsx
|
3238
3246
|
- test/regression/xlsx_files/utf8_09.xlsx
|
3239
3247
|
- test/regression/xlsx_files/utf8_10.xlsx
|
3248
|
+
- test/regression/xlsx_files/utf8_11.xlsx
|
3240
3249
|
- test/regression/xlsx_files/vbaProject01.bin
|
3241
3250
|
- test/regression/xlsx_files/vbaProject02.bin
|
3242
3251
|
- test/regression/xlsx_files/vml01.xlsx
|
@@ -3256,6 +3265,7 @@ test_files:
|
|
3256
3265
|
- test/workbook/test_workbook_01.rb
|
3257
3266
|
- test/workbook/test_workbook_02.rb
|
3258
3267
|
- test/workbook/test_workbook_03.rb
|
3268
|
+
- test/workbook/test_worksheet_by_name.rb
|
3259
3269
|
- test/workbook/test_write_calc_pr.rb
|
3260
3270
|
- test/workbook/test_write_defined_name.rb
|
3261
3271
|
- test/workbook/test_write_defined_names.rb
|