write_xlsx 0.72.3.beta1 → 0.73.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changes +6 -0
- data/README.md +1 -1
- data/lib/write_xlsx/chart/axis.rb +15 -1
- data/lib/write_xlsx/chart/scatter.rb +1 -1
- data/lib/write_xlsx/chart/series.rb +17 -6
- data/lib/write_xlsx/chart.rb +60 -12
- data/lib/write_xlsx/package/table.rb +10 -9
- data/lib/write_xlsx/version.rb +1 -1
- data/lib/write_xlsx/workbook.rb +17 -8
- data/lib/write_xlsx/worksheet.rb +18 -5
- data/test/package/table/test_table01.rb +1 -0
- data/test/package/table/test_table02.rb +1 -0
- data/test/package/table/test_table03.rb +1 -0
- data/test/package/table/test_table04.rb +1 -0
- data/test/package/table/test_table05.rb +1 -0
- data/test/package/table/test_table06.rb +1 -0
- data/test/package/table/test_table07.rb +1 -0
- data/test/package/table/test_table08.rb +1 -0
- data/test/package/table/test_table09.rb +1 -0
- data/test/package/table/test_table10.rb +1 -0
- data/test/package/table/test_table11.rb +1 -0
- data/test/package/table/test_table12.rb +1 -0
- data/test/package/table/test_write_auto_filter.rb +1 -1
- data/test/package/table/test_write_table_column.rb +1 -1
- data/test/package/table/test_write_table_style_info.rb +1 -1
- data/test/regression/test_chart_axis30.rb +44 -0
- data/test/regression/test_chart_axis31.rb +44 -0
- data/test/regression/test_chart_axis32.rb +44 -0
- data/test/regression/test_chart_errorbars08.rb +54 -0
- data/test/regression/test_chart_errorbars09.rb +54 -0
- data/test/regression/test_chart_errorbars10.rb +56 -0
- data/test/regression/test_chart_font07.rb +44 -0
- data/test/regression/test_chart_font08.rb +44 -0
- data/test/regression/test_chart_scatter12.rb +51 -0
- data/test/regression/test_chart_scatter13.rb +51 -0
- data/test/regression/test_chart_scatter14.rb +52 -0
- data/test/regression/test_comment12.rb +35 -0
- data/test/regression/test_table16.rb +37 -0
- data/test/regression/xlsx_files/chart_axis30.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis31.xlsx +0 -0
- data/test/regression/xlsx_files/chart_axis32.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars09.xlsx +0 -0
- data/test/regression/xlsx_files/chart_errorbars10.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font07.xlsx +0 -0
- data/test/regression/xlsx_files/chart_font08.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter12.xlsx +0 -0
- data/test/regression/xlsx_files/chart_scatter14.xlsx +0 -0
- data/test/regression/xlsx_files/comment12.xlsx +0 -0
- metadata +60 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd7c9924a9f5ccf9b80207b867a7bff175bc382a
|
4
|
+
data.tar.gz: bb3b383fc98310774db112b3a3452d4b41bfab40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 945b9f957e1c8b223aad62bc58b9b73fa1d8df6213d69df9286f1995fc31f3629a417a2c0f3063c4a2fc29c374b6d0453ae435774d6984c54c081ea97d9ef118
|
7
|
+
data.tar.gz: 0e473012b15e3133e4f2a5df0ebf83a8cdad8f12c8cd9e078258cb9f7ff29a9c6a9c062e1ca627bc725fa58941b0e4ec7450e21de8abda3bb19258ed23515831
|
data/Changes
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
Change history of write_xlsx rubygem.
|
2
2
|
|
3
|
+
2013-11-13 v0.73.0
|
4
|
+
Added custom error bar option to charts.
|
5
|
+
Fix for tables added in non-sequential order.
|
6
|
+
Fix for scatter charts with markers on non-marker series.
|
7
|
+
Fix for charts with star style markers
|
8
|
+
|
3
9
|
2013-09-21 v0.72.3.beta1
|
4
10
|
speed up when script handles large number of cells.
|
5
11
|
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# write_xlsx
|
2
2
|
|
3
|
-
gem to create a new file in the Excel 2007+ XLSX format, and you can use the same interface as writeexcel gem. write_xlsx is converted from Perl's module [Excel::Writer::XLSX-0.
|
3
|
+
gem to create a new file in the Excel 2007+ XLSX format, and you can use the same interface as writeexcel gem. write_xlsx is converted from Perl's module [Excel::Writer::XLSX-0.73](https://github.com/jmcnamara/excel-writer-xlsx) .
|
4
4
|
|
5
5
|
## Description
|
6
6
|
|
@@ -11,7 +11,7 @@ module Writexlsx
|
|
11
11
|
attr_accessor :defaults, :reverse
|
12
12
|
attr_accessor :min, :max
|
13
13
|
attr_accessor :minor_unit, :major_unit, :minor_unit_type, :major_unit_type
|
14
|
-
attr_accessor :log_base, :crossing, :position, :label_position, :visible
|
14
|
+
attr_accessor :log_base, :crossing, :position, :position_axis, :label_position, :visible
|
15
15
|
attr_accessor :num_format, :num_format_linked, :num_font
|
16
16
|
attr_accessor :major_gridlines, :minor_gridlines, :major_tick_mark
|
17
17
|
|
@@ -31,6 +31,7 @@ module Writexlsx
|
|
31
31
|
@major_unit_type = args[:major_unit_type]
|
32
32
|
@log_base = args[:log_base]
|
33
33
|
@crossing = args[:crossing]
|
34
|
+
@position_axis = args[:position_axis]
|
34
35
|
@label_position = args[:label_position]
|
35
36
|
@num_format = args[:num_format]
|
36
37
|
@num_format_linked = args[:num_format_linked]
|
@@ -50,8 +51,21 @@ module Writexlsx
|
|
50
51
|
@position = args[:position]
|
51
52
|
@position = @position.downcase[0, 1] if @position
|
52
53
|
|
54
|
+
# Set the position for a category axis on or between the tick marks.
|
55
|
+
if @position_axis
|
56
|
+
if @position_axis == 'on_tick'
|
57
|
+
@position_axis = 'midCat'
|
58
|
+
elsif @position_axis == 'between'
|
59
|
+
# Doesn't neet to be modified.
|
60
|
+
else
|
61
|
+
# Otherwise use the default value.
|
62
|
+
@position_axis = nil
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
53
66
|
# Set the font properties if present.
|
54
67
|
@num_font = @chart.convert_font_args(args[:num_font])
|
68
|
+
@name_font = @chart.convert_font_args(args[:name_font])
|
55
69
|
end
|
56
70
|
|
57
71
|
#
|
@@ -255,7 +255,7 @@ module Writexlsx
|
|
255
255
|
# Go through each series and define default values.
|
256
256
|
@series.each do |series|
|
257
257
|
# Set a marker type unless there is already a user defined type.
|
258
|
-
|
258
|
+
unless ptrue?(series.marker)
|
259
259
|
series.marker = { :type => 'none', :_defined => 1 }
|
260
260
|
end
|
261
261
|
end
|
@@ -83,7 +83,7 @@ class Series
|
|
83
83
|
:diamond => 'diamond',
|
84
84
|
:triangle => 'triangle',
|
85
85
|
:x => 'x',
|
86
|
-
:star => '
|
86
|
+
:star => 'star',
|
87
87
|
:dot => 'dot',
|
88
88
|
:short_dash => 'dot',
|
89
89
|
:dash => 'dash',
|
@@ -160,17 +160,22 @@ class Series
|
|
160
160
|
|
161
161
|
# Default values.
|
162
162
|
error_bars = {
|
163
|
-
:_type
|
164
|
-
:_value
|
165
|
-
:_endcap
|
166
|
-
:_direction
|
163
|
+
:_type => 'fixedVal',
|
164
|
+
:_value => 1,
|
165
|
+
:_endcap => 1,
|
166
|
+
:_direction => 'both',
|
167
|
+
:_plus_values => [1],
|
168
|
+
:_minus_values => [1],
|
169
|
+
:_plus_data => [],
|
170
|
+
:_minus_data => []
|
167
171
|
}
|
168
172
|
|
169
173
|
types = {
|
170
174
|
:fixed => 'fixedVal',
|
171
175
|
:percentage => 'percentage',
|
172
176
|
:standard_deviation => 'stdDev',
|
173
|
-
:standard_error => 'stdErr'
|
177
|
+
:standard_error => 'stdErr',
|
178
|
+
:custom => 'cust'
|
174
179
|
}
|
175
180
|
|
176
181
|
# Check the error bars type.
|
@@ -203,6 +208,12 @@ class Series
|
|
203
208
|
end
|
204
209
|
end
|
205
210
|
|
211
|
+
# Set any custom values
|
212
|
+
error_bars[:_plus_values] = params[:plus_values] if params[:plus_values]
|
213
|
+
error_bars[:_minus_values] = params[:minus_values] if params[:minus_values]
|
214
|
+
error_bars[:_plus_data] = params[:plus_data] if params[:plus_data]
|
215
|
+
error_bars[:_minus_data] = params[:minus_data] if params[:minus_data]
|
216
|
+
|
206
217
|
# Set the line properties for the error bars.
|
207
218
|
error_bars[:_line] = line_properties(params[:line])
|
208
219
|
|
data/lib/write_xlsx/chart.rb
CHANGED
@@ -118,6 +118,7 @@ module Writexlsx
|
|
118
118
|
@y_offset = 0
|
119
119
|
@table = nil
|
120
120
|
@smooth_allowed = 0
|
121
|
+
@cross_between = 'between'
|
121
122
|
|
122
123
|
set_default_properties
|
123
124
|
end
|
@@ -211,8 +212,9 @@ module Writexlsx
|
|
211
212
|
# Set the properties of the chart legend.
|
212
213
|
#
|
213
214
|
def set_legend(params)
|
214
|
-
@legend_position
|
215
|
+
@legend_position = params[:position] || 'right'
|
215
216
|
@legend_delete_series = params[:delete_series]
|
217
|
+
@legend_font = convert_font_args(params[:font])
|
216
218
|
end
|
217
219
|
|
218
220
|
#
|
@@ -680,7 +682,10 @@ module Writexlsx
|
|
680
682
|
attributes << ['i', font[:_italic]] if font[:_italic]
|
681
683
|
attributes << ['u', 'sng'] if font[:_underline]
|
682
684
|
|
683
|
-
|
685
|
+
# Turn off baseline when testing fonts that don't have it.
|
686
|
+
if font[:_baseline] != -1
|
687
|
+
attributes << ['baseline', font[:_baseline]]
|
688
|
+
end
|
684
689
|
attributes
|
685
690
|
end
|
686
691
|
|
@@ -1018,6 +1023,13 @@ module Writexlsx
|
|
1018
1023
|
write_num_or_str_ref('c:strRef', formula, data, type)
|
1019
1024
|
end
|
1020
1025
|
|
1026
|
+
#
|
1027
|
+
# Write the <c:numLit> element for literal number list elements.
|
1028
|
+
#
|
1029
|
+
def write_num_lit(data)
|
1030
|
+
write_num_base('c:numLit', data)
|
1031
|
+
end
|
1032
|
+
|
1021
1033
|
#
|
1022
1034
|
# Write the <c:f> element.
|
1023
1035
|
#
|
@@ -1189,7 +1201,7 @@ module Writexlsx
|
|
1189
1201
|
write_crossing(x_axis.crossing)
|
1190
1202
|
|
1191
1203
|
# Write the c:crossBetween element.
|
1192
|
-
write_cross_between
|
1204
|
+
write_cross_between(x_axis.position_axis)
|
1193
1205
|
|
1194
1206
|
# Write the c:majorUnit element.
|
1195
1207
|
write_c_major_unit(y_axis.major_unit)
|
@@ -1467,8 +1479,8 @@ module Writexlsx
|
|
1467
1479
|
#
|
1468
1480
|
# Write the <c:crossBetween> element.
|
1469
1481
|
#
|
1470
|
-
def write_cross_between # :nodoc:
|
1471
|
-
val
|
1482
|
+
def write_cross_between(val = nil) # :nodoc:
|
1483
|
+
val ||= @cross_between
|
1472
1484
|
|
1473
1485
|
@writer.empty_tag('c:crossBetween', [ ['val', val] ])
|
1474
1486
|
end
|
@@ -1513,8 +1525,8 @@ module Writexlsx
|
|
1513
1525
|
# Write the <c:legend> element.
|
1514
1526
|
#
|
1515
1527
|
def write_legend # :nodoc:
|
1516
|
-
position
|
1517
|
-
overlay
|
1528
|
+
position = @legend_position
|
1529
|
+
overlay = false
|
1518
1530
|
|
1519
1531
|
if @legend_delete_series && @legend_delete_series.kind_of?(Array)
|
1520
1532
|
@delete_series = @legend_delete_series
|
@@ -1547,6 +1559,10 @@ module Writexlsx
|
|
1547
1559
|
end if @delete_series
|
1548
1560
|
# Write the c:layout element.
|
1549
1561
|
write_layout
|
1562
|
+
# Write the c:txPr element.
|
1563
|
+
if ptrue?(@legend_font)
|
1564
|
+
write_tx_pr(nil, @legend_font)
|
1565
|
+
end
|
1550
1566
|
# Write the c:overlay element.
|
1551
1567
|
write_overlay if overlay
|
1552
1568
|
end
|
@@ -2107,7 +2123,11 @@ module Writexlsx
|
|
2107
2123
|
# Write the <c:numCache> element.
|
2108
2124
|
#
|
2109
2125
|
def write_num_cache(data) # :nodoc:
|
2110
|
-
|
2126
|
+
write_num_base('c:numCache', data)
|
2127
|
+
end
|
2128
|
+
|
2129
|
+
def write_num_base(tag, data)
|
2130
|
+
@writer.tag_elements(tag) do
|
2111
2131
|
|
2112
2132
|
# Write the c:formatCode element.
|
2113
2133
|
write_format_code('General')
|
@@ -2115,9 +2135,7 @@ module Writexlsx
|
|
2115
2135
|
# Write the c:ptCount element.
|
2116
2136
|
write_pt_count(data.size)
|
2117
2137
|
|
2118
|
-
|
2119
|
-
token = data[i]
|
2120
|
-
|
2138
|
+
data.each_with_index do |token, i|
|
2121
2139
|
# Write non-numeric data as 0.
|
2122
2140
|
if token &&
|
2123
2141
|
!(token.to_s =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/)
|
@@ -2356,7 +2374,13 @@ module Writexlsx
|
|
2356
2374
|
write_no_end_cap
|
2357
2375
|
end
|
2358
2376
|
|
2359
|
-
|
2377
|
+
case error_bars[:_type]
|
2378
|
+
when 'stdErr'
|
2379
|
+
# Don't need to write a c:errValType tag.
|
2380
|
+
when 'cust'
|
2381
|
+
# Write the custom error tags.
|
2382
|
+
write_custom_error(error_bars)
|
2383
|
+
else
|
2360
2384
|
# Write the c:val element.
|
2361
2385
|
write_error_val(error_bars[:_value])
|
2362
2386
|
end
|
@@ -2401,6 +2425,30 @@ module Writexlsx
|
|
2401
2425
|
@writer.empty_tag('c:val', [ ['val', val] ])
|
2402
2426
|
end
|
2403
2427
|
|
2428
|
+
#
|
2429
|
+
# Write the custom error bars type.
|
2430
|
+
#
|
2431
|
+
def write_custom_error(error_bars)
|
2432
|
+
if ptrue?(error_bars[:_plus_values])
|
2433
|
+
# Write the c:plus element.
|
2434
|
+
@writer.tag_elements('c:plus') do
|
2435
|
+
if error_bars[:_plus_values] =~ /^=/ # '=Sheet1!$A$1:$A$5'
|
2436
|
+
write_num_ref(error_bars[:_plus_values], error_bars[:_plus_data], 'num')
|
2437
|
+
else # [1, 2, 3]
|
2438
|
+
write_num_lit(error_bars[:_plus_values])
|
2439
|
+
end
|
2440
|
+
end
|
2441
|
+
# Write the c:minus element.
|
2442
|
+
@writer.tag_elements('c:minus') do
|
2443
|
+
if error_bars[:_minus_values] =~ /^=/ # '=Sheet1!$A$1:$A$5'
|
2444
|
+
write_num_ref(error_bars[:_minus_values], error_bars[:_minus_data], 'num')
|
2445
|
+
else # [1, 2, 3]
|
2446
|
+
write_num_lit(error_bars[:_minus_values])
|
2447
|
+
end
|
2448
|
+
end
|
2449
|
+
end
|
2450
|
+
end
|
2451
|
+
|
2404
2452
|
#
|
2405
2453
|
# Write the <c:upDownBars> element.
|
2406
2454
|
#
|
@@ -24,10 +24,11 @@ module Writexlsx
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
attr_reader :id, :name
|
28
|
+
|
29
|
+
def initialize(worksheet, *args)
|
28
30
|
@worksheet = worksheet
|
29
31
|
@writer = Package::XMLWriterSimple.new
|
30
|
-
@id = id
|
31
32
|
|
32
33
|
@row1, @row2, @col1, @col2, @param = handle_args(*args)
|
33
34
|
@columns = []
|
@@ -146,6 +147,11 @@ module Writexlsx
|
|
146
147
|
end
|
147
148
|
end
|
148
149
|
|
150
|
+
def prepare(id)
|
151
|
+
@id = id
|
152
|
+
@name ||= "Table#{id}"
|
153
|
+
end
|
154
|
+
|
149
155
|
private
|
150
156
|
|
151
157
|
def handle_args(*args)
|
@@ -264,12 +270,7 @@ module Writexlsx
|
|
264
270
|
end
|
265
271
|
|
266
272
|
def set_the_table_name
|
267
|
-
if @param[:name]
|
268
|
-
@name = @param[:name]
|
269
|
-
else
|
270
|
-
# Set a default name.
|
271
|
-
@name = "Table#{@id}"
|
272
|
-
end
|
273
|
+
@name = @param[:name] if @param[:name]
|
273
274
|
end
|
274
275
|
|
275
276
|
def set_the_table_and_autofilter_ranges
|
@@ -287,7 +288,7 @@ module Writexlsx
|
|
287
288
|
|
288
289
|
attributes = [
|
289
290
|
['xmlns', xmlns],
|
290
|
-
['id',
|
291
|
+
['id', id],
|
291
292
|
['name', @name],
|
292
293
|
['displayName', @name],
|
293
294
|
['ref', @range]
|
data/lib/write_xlsx/version.rb
CHANGED
data/lib/write_xlsx/workbook.rb
CHANGED
@@ -45,7 +45,6 @@ module Writexlsx
|
|
45
45
|
attr_reader :doc_properties # :nodoc:
|
46
46
|
attr_reader :image_types, :images # :nodoc:
|
47
47
|
attr_reader :shared_strings # :nodoc:
|
48
|
-
attr_accessor :table_count # :nodoc:
|
49
48
|
attr_reader :vba_project # :nodoc:
|
50
49
|
#
|
51
50
|
# A new Excel workbook is created using the +new+ constructor
|
@@ -1210,6 +1209,9 @@ module Writexlsx
|
|
1210
1209
|
# Add cached data to charts.
|
1211
1210
|
add_chart_data
|
1212
1211
|
|
1212
|
+
# Prepare the worksheet tables.
|
1213
|
+
prepare_tables
|
1214
|
+
|
1213
1215
|
# Package the workbook.
|
1214
1216
|
packager = Package::Packager.new(self)
|
1215
1217
|
packager.set_package_dir(@tempdir)
|
@@ -1497,6 +1499,17 @@ module Writexlsx
|
|
1497
1499
|
add_font_format_for_cell_comments if num_comment_files > 0
|
1498
1500
|
end
|
1499
1501
|
|
1502
|
+
#
|
1503
|
+
# Set the table ids for the worksheet tables.
|
1504
|
+
#
|
1505
|
+
def prepare_tables
|
1506
|
+
table_id = 0
|
1507
|
+
|
1508
|
+
sheets.each do |sheet|
|
1509
|
+
table_id += sheet.prepare_tables(table_id + 1)
|
1510
|
+
end
|
1511
|
+
end
|
1512
|
+
|
1500
1513
|
def add_font_format_for_cell_comments
|
1501
1514
|
format = Format.new(
|
1502
1515
|
@formats,
|
@@ -1666,17 +1679,13 @@ module Writexlsx
|
|
1666
1679
|
sheet.prepare_chart(index, chart_ref_id, drawing_id)
|
1667
1680
|
end
|
1668
1681
|
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
image_id, type, width, height, name = get_image_properties(filename)
|
1673
|
-
|
1682
|
+
sheet.images.each_with_index do |image, index|
|
1683
|
+
image_id, type, width, height, name = get_image_properties(image[2])
|
1674
1684
|
image_ref_id += 1
|
1675
|
-
|
1676
1685
|
sheet.prepare_image(index, image_ref_id, drawing_id, width, height, name, type)
|
1677
1686
|
end
|
1678
1687
|
|
1679
|
-
|
1688
|
+
sheet.shapes.each_with_index do |shape, index|
|
1680
1689
|
sheet.prepare_shape(index, drawing_id)
|
1681
1690
|
end
|
1682
1691
|
|
data/lib/write_xlsx/worksheet.rb
CHANGED
@@ -4213,11 +4213,7 @@ module Writexlsx
|
|
4213
4213
|
#
|
4214
4214
|
def add_table(*args)
|
4215
4215
|
# Table count is a member of Workbook, global to all Worksheet.
|
4216
|
-
|
4217
|
-
id = @workbook.table_count
|
4218
|
-
table = Package::Table.new(self, id, *args)
|
4219
|
-
|
4220
|
-
@external_table_links << ['/table', "../tables/table#{id}.xml"]
|
4216
|
+
table = Package::Table.new(self, *args)
|
4221
4217
|
@tables << table
|
4222
4218
|
table
|
4223
4219
|
end
|
@@ -5746,6 +5742,23 @@ module Writexlsx
|
|
5746
5742
|
@vml_shape_id = vml_shape_id
|
5747
5743
|
end
|
5748
5744
|
|
5745
|
+
#
|
5746
|
+
# Set the table ids for the worksheet tables.
|
5747
|
+
#
|
5748
|
+
def prepare_tables(table_id)
|
5749
|
+
if tables_count > 0
|
5750
|
+
id = table_id
|
5751
|
+
tables.each do |table|
|
5752
|
+
table.prepare(id)
|
5753
|
+
|
5754
|
+
# Store the link used for the rels file.
|
5755
|
+
@external_table_links << ['/table', "../tables/table#{id}.xml"]
|
5756
|
+
id += 1
|
5757
|
+
end
|
5758
|
+
end
|
5759
|
+
tables_count || 0
|
5760
|
+
end
|
5761
|
+
|
5749
5762
|
def num_comments_block
|
5750
5763
|
@comments.size / 1024
|
5751
5764
|
end
|
@@ -12,6 +12,7 @@ class TestTable02 < Test::Unit::TestCase
|
|
12
12
|
def test_table02
|
13
13
|
# Set the table properties.
|
14
14
|
@worksheet.add_table('D4:I15', :style => 'Table Style Light 17')
|
15
|
+
@worksheet.__send__(:prepare_tables, 1)
|
15
16
|
|
16
17
|
table = @worksheet.tables[0]
|
17
18
|
table.__send__(:assemble_xml_file)
|
@@ -12,7 +12,7 @@ class TestTableWriteAutoFilter01 < Test::Unit::TestCase
|
|
12
12
|
def test_table_write_auto_filter
|
13
13
|
expected = '<autoFilter ref="C3:F13"/>'
|
14
14
|
|
15
|
-
table = Writexlsx::Package::Table.new(@worksheet,
|
15
|
+
table = Writexlsx::Package::Table.new(@worksheet, 1, 1, 2, 2)
|
16
16
|
table.instance_variable_set(:@autofilter, 'C3:F13')
|
17
17
|
|
18
18
|
table.__send__(:write_auto_filter)
|
@@ -11,7 +11,7 @@ class TestTableWriteTableColumn < Test::Unit::TestCase
|
|
11
11
|
def test_table_write_table_column
|
12
12
|
expected = '<tableColumn id="1" name="Column1"/>'
|
13
13
|
|
14
|
-
table = Writexlsx::Package::Table.new(@worksheet,
|
14
|
+
table = Writexlsx::Package::Table.new(@worksheet, 1, 1, 2, 2)
|
15
15
|
col_data = Writexlsx::Package::Table::ColumnData.new(1)
|
16
16
|
|
17
17
|
table.__send__(:write_table_column, col_data)
|
@@ -11,7 +11,7 @@ class TestTableWriteTableStyleInfo < Test::Unit::TestCase
|
|
11
11
|
def test_table_write_table_style_info
|
12
12
|
expected = '<tableStyleInfo name="TableStyleMedium9" showFirstColumn="0" showLastColumn="0" showRowStripes="1" showColumnStripes="0"/>'
|
13
13
|
|
14
|
-
table = Writexlsx::Package::Table.new(@worksheet,
|
14
|
+
table = Writexlsx::Package::Table.new(@worksheet, 1, 1, 2, 2)
|
15
15
|
table.instance_variable_set(:@style, 'TableStyleMedium9')
|
16
16
|
table.instance_variable_set(:@show_first_col, 0)
|
17
17
|
table.instance_variable_set(:@show_last_col, 0)
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionChartAxis30 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_chart_axis30
|
14
|
+
@xlsx = 'chart_axis30.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
chart = workbook.add_chart(:type => 'line', :embedded => 1)
|
18
|
+
|
19
|
+
# For testing, copy the randomly generated axis ids in the target xlsx file.
|
20
|
+
chart.instance_variable_set(:@axis_ids, [69200896, 69215360])
|
21
|
+
data = [
|
22
|
+
[ 1, 2, 3, 4, 5 ],
|
23
|
+
[ 2, 4, 6, 8, 10 ],
|
24
|
+
[ 3, 6, 9, 12, 15 ]
|
25
|
+
]
|
26
|
+
|
27
|
+
chart.set_x_axis(:position_axis => 'on_tick')
|
28
|
+
|
29
|
+
worksheet.write('A1', data)
|
30
|
+
|
31
|
+
chart.add_series(:values => '=Sheet1!$A$1:$A$5')
|
32
|
+
chart.add_series(:values => '=Sheet1!$B$1:$B$5')
|
33
|
+
chart.add_series(:values => '=Sheet1!$C$1:$C$5')
|
34
|
+
|
35
|
+
worksheet.insert_chart('E9', chart)
|
36
|
+
|
37
|
+
workbook.close
|
38
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx),
|
39
|
+
@xlsx,
|
40
|
+
nil,
|
41
|
+
{}
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class TestRegressionChartAxis31 < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
setup_dir_var
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
File.delete(@xlsx) if File.exist?(@xlsx)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_chart_axis31
|
14
|
+
@xlsx = 'chart_axis31.xlsx'
|
15
|
+
workbook = WriteXLSX.new(@xlsx)
|
16
|
+
worksheet = workbook.add_worksheet
|
17
|
+
chart = workbook.add_chart(:type => 'bar', :embedded => 1)
|
18
|
+
|
19
|
+
# For testing, copy the randomly generated axis ids in the target xlsx file.
|
20
|
+
chart.instance_variable_set(:@axis_ids, [90616960, 90618496])
|
21
|
+
data = [
|
22
|
+
[ 1, 2, 3, 4, 5 ],
|
23
|
+
[ 2, 4, 6, 8, 10 ],
|
24
|
+
[ 3, 6, 9, 12, 15 ]
|
25
|
+
]
|
26
|
+
|
27
|
+
chart.set_y_axis(:position_axis => 'on_tick')
|
28
|
+
|
29
|
+
worksheet.write('A1', data)
|
30
|
+
|
31
|
+
chart.add_series(:values => '=Sheet1!$A$1:$A$5')
|
32
|
+
chart.add_series(:values => '=Sheet1!$B$1:$B$5')
|
33
|
+
chart.add_series(:values => '=Sheet1!$C$1:$C$5')
|
34
|
+
|
35
|
+
worksheet.insert_chart('E9', chart)
|
36
|
+
|
37
|
+
workbook.close
|
38
|
+
compare_xlsx_for_regression(File.join(@regression_output, @xlsx),
|
39
|
+
@xlsx,
|
40
|
+
nil,
|
41
|
+
{}
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|