writeexcel 1.0.1 → 1.0.2
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/README.rdoc +5 -1
- data/examples/data_validate.rb +0 -1
- data/examples/images.rb +0 -1
- data/examples/merge3.rb +0 -1
- data/examples/properties_jp.rb +1 -1
- data/examples/regions.rb +0 -1
- data/html/en/doc_en.html +5 -2
- data/lib/writeexcel/version.rb +1 -1
- data/lib/writeexcel/workbook.rb +21 -13
- data/test/helper.rb +3 -0
- data/test/test_01_add_worksheet.rb +35 -2
- data/test/test_example_match.rb +6 -4
- data/test/test_properties.rb +3 -2
- data/writeexcel.gemspec +1 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b531b36875f0418a1d22f1eacac9cf7f1e811ff
|
4
|
+
data.tar.gz: 0bc6f8b78768aa2e2ce03b97066d10d1b751ff63
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6323cf3fab002c0211284e4fe5f0e41038af0ca322d1a79197b7e52cdd23c3d2a36982e7871d52022cbfa467d03f24f9bd56e81442f440ffa633401ada8fe71a
|
7
|
+
data.tar.gz: 05e0fc08c9824fb5590f267919fea15c1525bf0c34bae99d01842392885e921ac57a382d3e989ad6d139dbfdd08087f644da3002ef1874e1281a722532ed448e
|
data/README.rdoc
CHANGED
@@ -82,6 +82,10 @@ Example Code:
|
|
82
82
|
* and ......
|
83
83
|
|
84
84
|
== Recent Change
|
85
|
+
v1.0.2
|
86
|
+
* Bug fix issue 28. bug in non ascii worksheet names.
|
87
|
+
* Bug fix in testcase issue 28. fail due to defferent timezone.
|
88
|
+
|
85
89
|
v1.0.1
|
86
90
|
* Bug fix issue 25. bug in Chart#set_legend.
|
87
91
|
|
@@ -93,7 +97,7 @@ v1.0.0
|
|
93
97
|
Original was written in Perl by John McNamara (jmcnamara@cpan.org).
|
94
98
|
|
95
99
|
Convert to ruby by Hideo Nakamura (cxn03651@msj.biglobe.ne.jp)
|
96
|
-
Copyright (c) 2009-2013 Hideo NAKAMURA. See LICENSE for details.
|
100
|
+
Copyright (c) 2009-2013 Hideo NAKAMURA. See LICENSE.txt for details.
|
97
101
|
|
98
102
|
== License
|
99
103
|
|
data/examples/data_validate.rb
CHANGED
data/examples/images.rb
CHANGED
data/examples/merge3.rb
CHANGED
@@ -24,7 +24,6 @@
|
|
24
24
|
[1, 3,6,7].each { |row| worksheet.set_row(row, 30) }
|
25
25
|
worksheet.set_column('B:D', 20)
|
26
26
|
|
27
|
-
bp=1
|
28
27
|
###############################################################################
|
29
28
|
#
|
30
29
|
# Example 1: Merge cells containing a hyperlink using write_url_range()
|
data/examples/properties_jp.rb
CHANGED
data/examples/regions.rb
CHANGED
data/html/en/doc_en.html
CHANGED
@@ -703,7 +703,7 @@ name="sheets"
|
|
703
703
|
<p>If no arguments are passed the method returns a list of all the worksheets in the workbook. This is useful if you want to repeat an operation on each worksheet:</p>
|
704
704
|
|
705
705
|
<pre>
|
706
|
-
workbook.sheets.each do |worksheet|
|
706
|
+
workbook.sheets.each do |worksheet|
|
707
707
|
print worksheet.name
|
708
708
|
end
|
709
709
|
</pre>
|
@@ -5830,6 +5830,7 @@ name="Additional_Examples"
|
|
5830
5830
|
chart_area.rb A demo of area style charts.
|
5831
5831
|
chart_bar.rb A demo of bar (vertical histogram) style charts.
|
5832
5832
|
chart_column.rb A demo of column (histogram) style charts.
|
5833
|
+
chart_legend.rb A demo of chart with/without legend.
|
5833
5834
|
chart_line.rb A demo of line style charts.
|
5834
5835
|
chart_pie.rb A demo of pie style charts.
|
5835
5836
|
chart_scatter.rb A demo of scatter style charts.
|
@@ -5857,6 +5858,7 @@ name="Additional_Examples"
|
|
5857
5858
|
outline.rb An example of outlines and grouping.
|
5858
5859
|
outline_collapsed.rb An example of collapsed outlines.
|
5859
5860
|
panes.rb An examples of how to create panes.
|
5861
|
+
password_protection.rb An example of sheet protection by password.
|
5860
5862
|
properties.rb Add document properties to a workbook.
|
5861
5863
|
properties_jp.rb Add document properties in Japanese to a workbook.
|
5862
5864
|
protection.rb Example of cell locking and formula hiding.
|
@@ -5864,6 +5866,7 @@ name="Additional_Examples"
|
|
5864
5866
|
right_to_left.rb Change default sheet direction to right to left.
|
5865
5867
|
row_wrap.rb How to wrap data from one worksheet onto another.
|
5866
5868
|
sales.rb An example of a simple sales spreadsheet.
|
5869
|
+
stats.rb A simple example of how to use functions.
|
5867
5870
|
stocks.rb Demonstrates conditional formatting.
|
5868
5871
|
tab_colors.rb Example of how to set worksheet tab colours.
|
5869
5872
|
write_arrays.rb Example of writing 1D or 2D arrays of data.
|
@@ -5931,7 +5934,7 @@ name="THE_EXCEL_BINARY_FORMAT"
|
|
5931
5934
|
<h1><a class='u' href='#___top' title='click to go to top of document'
|
5932
5935
|
name="LICENSE"
|
5933
5936
|
>LICENSE</a></h1>
|
5934
|
-
<p>
|
5937
|
+
<p>MIT Lisence.</p>
|
5935
5938
|
|
5936
5939
|
<h1><a class='u' href='#___top' title='click to go to top of document'
|
5937
5940
|
name="COPYRIGHT"
|
data/lib/writeexcel/version.rb
CHANGED
data/lib/writeexcel/workbook.rb
CHANGED
@@ -872,7 +872,7 @@ def check_sheetname(name, name_utf16be = false, chart = nil) #:nodoc:
|
|
872
872
|
check_sheetname_valid_chars(name, name_utf16be)
|
873
873
|
|
874
874
|
# Handle utf8 strings
|
875
|
-
if is_utf8?(name)
|
875
|
+
if !name_utf16be && is_utf8?(name)
|
876
876
|
name = utf8_to_16be(name)
|
877
877
|
name_utf16be = true
|
878
878
|
end
|
@@ -914,19 +914,27 @@ def check_sheetname_even(name) #:nodoc:
|
|
914
914
|
|
915
915
|
def check_sheetname_valid_chars(name, name_utf16be) #:nodoc:
|
916
916
|
# Check that sheetname doesn't contain any invalid characters
|
917
|
-
|
918
|
-
|
919
|
-
|
917
|
+
invalid_chars = %r![\[\]:*?/\\]!
|
918
|
+
|
919
|
+
if ascii_sheetname_invalid_chars?(name, name_utf16be, invalid_chars) ||
|
920
|
+
non_ascii_sheetname_invalid_chars?(name, invalid_chars)
|
920
921
|
raise "Invalid character []:*?/\\ in worksheet name: #{name}"
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
922
|
+
end
|
923
|
+
end
|
924
|
+
|
925
|
+
def ascii_sheetname_invalid_chars?(name, name_utf16be, invalid_chars) # :nodoc:
|
926
|
+
# Check ASCII names
|
927
|
+
!name_utf16be && name =~ invalid_chars
|
928
|
+
end
|
929
|
+
|
930
|
+
def non_ascii_sheetname_invalid_chars?(name, invalid_chars) # :nodoc:
|
931
|
+
# Extract any 8bit clean chars from the UTF16 name and validate them.
|
932
|
+
str = ruby_19 { name.dup.force_encoding("binary") } || ruby_18 { name.dup }
|
933
|
+
while str =~ /../m
|
934
|
+
hi, lo = $~[0].unpack('aa')
|
935
|
+
str = $~.post_match
|
936
|
+
if hi == "\0" and lo =~ invalid_chars
|
937
|
+
raise 'Invalid character []:*?/\\ in worksheet name: ' + name
|
930
938
|
end
|
931
939
|
end
|
932
940
|
end
|
data/test/helper.rb
CHANGED
@@ -3,8 +3,41 @@
|
|
3
3
|
|
4
4
|
class TC_add_worksheet < Test::Unit::TestCase
|
5
5
|
|
6
|
-
def
|
7
|
-
|
6
|
+
def setup
|
7
|
+
@workbook = WriteExcel.new(StringIO.new)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_ascii_worksheet_name
|
11
|
+
|
12
|
+
name = "Test"
|
13
|
+
|
14
|
+
assert_nothing_raised {
|
15
|
+
sheet = @workbook.add_worksheet(name)
|
16
|
+
assert_equal name, sheet.name
|
17
|
+
}
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_utf_8_worksheet_name
|
22
|
+
|
23
|
+
name = "Décembre"
|
24
|
+
|
25
|
+
assert_nothing_raised {
|
26
|
+
sheet = @workbook.add_worksheet(name)
|
27
|
+
assert_equal utf8_to_16be(name), sheet.name
|
28
|
+
}
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_utf_16be_worksheet_name
|
33
|
+
|
34
|
+
name = utf8_to_16be("Décembre")
|
35
|
+
|
36
|
+
assert_nothing_raised {
|
37
|
+
sheet = @workbook.add_worksheet(name, true)
|
38
|
+
assert_equal name, sheet.name
|
39
|
+
}
|
40
|
+
|
8
41
|
end
|
9
42
|
|
10
43
|
end
|
data/test/test_example_match.rb
CHANGED
@@ -318,7 +318,6 @@ def test_regions
|
|
318
318
|
west.write(0, 1, 100000)
|
319
319
|
|
320
320
|
# Set the active worksheet
|
321
|
-
bp=1
|
322
321
|
south.activate()
|
323
322
|
|
324
323
|
# Set the width of the first column
|
@@ -701,7 +700,7 @@ def test_data_validate
|
|
701
700
|
#
|
702
701
|
txt = 'Select a value from a drop down list'
|
703
702
|
row += 2
|
704
|
-
|
703
|
+
|
705
704
|
worksheet.write(row, 0, txt)
|
706
705
|
worksheet.data_validation(row, 1,
|
707
706
|
{
|
@@ -1156,7 +1155,6 @@ def test_images
|
|
1156
1155
|
worksheet2 = workbook.add_worksheet('Image 2')
|
1157
1156
|
worksheet3 = workbook.add_worksheet('Image 3')
|
1158
1157
|
worksheet4 = workbook.add_worksheet('Image 4')
|
1159
|
-
bp=1
|
1160
1158
|
|
1161
1159
|
# Insert a basic image
|
1162
1160
|
worksheet1.write('A10', "Image inserted into worksheet.")
|
@@ -3423,14 +3421,16 @@ def test_compatibility_mode_write_number
|
|
3423
3421
|
end
|
3424
3422
|
|
3425
3423
|
def test_properties
|
3424
|
+
tz = ENV["TZ"]
|
3426
3425
|
workbook = WriteExcel.new(@file)
|
3427
3426
|
|
3428
3427
|
#
|
3429
3428
|
# adjust @localtime to target xls file.
|
3430
3429
|
#
|
3430
|
+
ENV["TZ"] = "Japan"
|
3431
3431
|
workbook.instance_variable_set(
|
3432
3432
|
:@localtime,
|
3433
|
-
Time.
|
3433
|
+
Time.gm(2013, 5, 5, 13, 37, 42).localtime
|
3434
3434
|
)
|
3435
3435
|
|
3436
3436
|
worksheet = workbook.add_worksheet
|
@@ -3454,6 +3454,8 @@ def test_properties
|
|
3454
3454
|
|
3455
3455
|
# do assertion
|
3456
3456
|
compare_file("#{PERL_OUTDIR}/properties.xls", @file)
|
3457
|
+
|
3458
|
+
ENV["TZ"] = tz
|
3457
3459
|
end
|
3458
3460
|
|
3459
3461
|
def test_chart_legend
|
data/test/test_properties.rb
CHANGED
@@ -9,9 +9,10 @@ def setup
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def test_pack_VT_FILETIME
|
12
|
+
filetime =
|
12
13
|
assert_equal(
|
13
14
|
'40 00 00 00 00 FD 2D ED CE 48 CE 01',
|
14
|
-
unpack_record(pack_VT_FILETIME(Time.
|
15
|
+
unpack_record(pack_VT_FILETIME(Time.gm(2013, 5, 4, 13, 54, 42)))
|
15
16
|
)
|
16
17
|
end
|
17
18
|
|
@@ -26,7 +27,7 @@ def test_create_summary_property_set
|
|
26
27
|
[4, "VT_LPSTR", "Hideo NAKAMURA"],
|
27
28
|
[5, "VT_LPSTR", "Sample, Example, Properties"],
|
28
29
|
[6, "VT_LPSTR", "Created with Ruby and WriteExcel"],
|
29
|
-
[12, "VT_FILETIME", Time.
|
30
|
+
[12, "VT_FILETIME", Time.gm(2013, 5, 4, 12, 47, 16)]
|
30
31
|
]
|
31
32
|
))
|
32
33
|
)
|
data/writeexcel.gemspec
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: writeexcel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hideo NAKAMURA
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
12
|
-
dependencies:
|
11
|
+
date: 2013-12-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: simplecov
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: Multiple worksheets can be added to a workbook and formatting can be
|
14
28
|
applied to cells. Text, numbers, formulas, hyperlinks and images can be written
|
15
29
|
to the cells.
|
@@ -299,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
299
313
|
version: '0'
|
300
314
|
requirements: []
|
301
315
|
rubyforge_project:
|
302
|
-
rubygems_version: 2.
|
316
|
+
rubygems_version: 2.1.11
|
303
317
|
signing_key:
|
304
318
|
specification_version: 4
|
305
319
|
summary: Write to a cross-platform Excel binary file.
|