write_xlsx 0.72.3.beta1 → 0.73.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/Changes +6 -0
  3. data/README.md +1 -1
  4. data/lib/write_xlsx/chart/axis.rb +15 -1
  5. data/lib/write_xlsx/chart/scatter.rb +1 -1
  6. data/lib/write_xlsx/chart/series.rb +17 -6
  7. data/lib/write_xlsx/chart.rb +60 -12
  8. data/lib/write_xlsx/package/table.rb +10 -9
  9. data/lib/write_xlsx/version.rb +1 -1
  10. data/lib/write_xlsx/workbook.rb +17 -8
  11. data/lib/write_xlsx/worksheet.rb +18 -5
  12. data/test/package/table/test_table01.rb +1 -0
  13. data/test/package/table/test_table02.rb +1 -0
  14. data/test/package/table/test_table03.rb +1 -0
  15. data/test/package/table/test_table04.rb +1 -0
  16. data/test/package/table/test_table05.rb +1 -0
  17. data/test/package/table/test_table06.rb +1 -0
  18. data/test/package/table/test_table07.rb +1 -0
  19. data/test/package/table/test_table08.rb +1 -0
  20. data/test/package/table/test_table09.rb +1 -0
  21. data/test/package/table/test_table10.rb +1 -0
  22. data/test/package/table/test_table11.rb +1 -0
  23. data/test/package/table/test_table12.rb +1 -0
  24. data/test/package/table/test_write_auto_filter.rb +1 -1
  25. data/test/package/table/test_write_table_column.rb +1 -1
  26. data/test/package/table/test_write_table_style_info.rb +1 -1
  27. data/test/regression/test_chart_axis30.rb +44 -0
  28. data/test/regression/test_chart_axis31.rb +44 -0
  29. data/test/regression/test_chart_axis32.rb +44 -0
  30. data/test/regression/test_chart_errorbars08.rb +54 -0
  31. data/test/regression/test_chart_errorbars09.rb +54 -0
  32. data/test/regression/test_chart_errorbars10.rb +56 -0
  33. data/test/regression/test_chart_font07.rb +44 -0
  34. data/test/regression/test_chart_font08.rb +44 -0
  35. data/test/regression/test_chart_scatter12.rb +51 -0
  36. data/test/regression/test_chart_scatter13.rb +51 -0
  37. data/test/regression/test_chart_scatter14.rb +52 -0
  38. data/test/regression/test_comment12.rb +35 -0
  39. data/test/regression/test_table16.rb +37 -0
  40. data/test/regression/xlsx_files/chart_axis30.xlsx +0 -0
  41. data/test/regression/xlsx_files/chart_axis31.xlsx +0 -0
  42. data/test/regression/xlsx_files/chart_axis32.xlsx +0 -0
  43. data/test/regression/xlsx_files/chart_errorbars07.xlsx +0 -0
  44. data/test/regression/xlsx_files/chart_errorbars08.xlsx +0 -0
  45. data/test/regression/xlsx_files/chart_errorbars09.xlsx +0 -0
  46. data/test/regression/xlsx_files/chart_errorbars10.xlsx +0 -0
  47. data/test/regression/xlsx_files/chart_font07.xlsx +0 -0
  48. data/test/regression/xlsx_files/chart_font08.xlsx +0 -0
  49. data/test/regression/xlsx_files/chart_scatter12.xlsx +0 -0
  50. data/test/regression/xlsx_files/chart_scatter14.xlsx +0 -0
  51. data/test/regression/xlsx_files/comment12.xlsx +0 -0
  52. metadata +60 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d6e30ec99cbb2730ee191dc212d2c30806486f1
4
- data.tar.gz: d67dbc2cc225f0cb7dde96feebaf39600a718039
3
+ metadata.gz: bd7c9924a9f5ccf9b80207b867a7bff175bc382a
4
+ data.tar.gz: bb3b383fc98310774db112b3a3452d4b41bfab40
5
5
  SHA512:
6
- metadata.gz: d78099249c92fdc5f11f4d977a97d9b1e70b1ee9469ec3a6a0f96e298046703996c9841320c9e2c4276df8907700b33d7055588b1e72fa902737c256999f25a4
7
- data.tar.gz: f78e06828d1e804f0a17730b5b80305082ead39dfd650c535f4289fe7ef35f51d43abf2e1f6550766c0be24ea30fa1fc5be6d2e5c08d405bd2f468cddd2c2ee5
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.72](https://github.com/jmcnamara/excel-writer-xlsx) .
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
- if !series.marker || series.marker[:_defined] == 0
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 => 'start',
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 => 'fixedVal',
164
- :_value => 1,
165
- :_endcap => 1,
166
- :_direction => 'both'
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
 
@@ -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 = params[:position] || 'right'
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
- attributes << ['baseline', font[:_baseline]]
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 = @cross_between || 'between'
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 = @legend_position
1517
- overlay = false
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
- @writer.tag_elements('c:numCache') do
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
- (0..data.size - 1).each do |i|
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
- if error_bars[:_type] != 'stdErr'
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
- def initialize(worksheet, id, *args)
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', @id],
291
+ ['id', id],
291
292
  ['name', @name],
292
293
  ['displayName', @name],
293
294
  ['ref', @range]
@@ -1,5 +1,5 @@
1
1
  require 'write_xlsx/workbook'
2
2
 
3
3
  class WriteXLSX < Writexlsx::Workbook
4
- VERSION = "0.72.3.beta1"
4
+ VERSION = "0.73.0"
5
5
  end
@@ -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
- (0 .. image_count - 1).each do |index|
1670
- filename = sheet.images[index][2]
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
- (0..shape_count - 1).each do |index|
1688
+ sheet.shapes.each_with_index do |shape, index|
1680
1689
  sheet.prepare_shape(index, drawing_id)
1681
1690
  end
1682
1691
 
@@ -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
- @workbook.table_count += 1
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 TestTable01 < Test::Unit::TestCase
12
12
  def test_table01
13
13
  # Set the table properties.
14
14
  @worksheet.add_table('C3:F13')
15
+ @worksheet.__send__(:prepare_tables, 1)
15
16
 
16
17
  table = @worksheet.tables[0]
17
18
  table.__send__(:assemble_xml_file)
@@ -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)
@@ -20,6 +20,7 @@ class TestTable03 < Test::Unit::TestCase
20
20
  :banded_columns => 1
21
21
  }
22
22
  )
23
+ @worksheet.__send__(:prepare_tables, 1)
23
24
 
24
25
  table = @worksheet.tables[0]
25
26
  table.__send__(:assemble_xml_file)
@@ -17,6 +17,7 @@ class TestTable04 < Test::Unit::TestCase
17
17
  :autofilter => 0
18
18
  }
19
19
  )
20
+ @worksheet.__send__(:prepare_tables, 1)
20
21
 
21
22
  table = @worksheet.tables[0]
22
23
  table.__send__(:assemble_xml_file)
@@ -17,6 +17,7 @@ class TestTable05 < Test::Unit::TestCase
17
17
  :header_row => 0
18
18
  }
19
19
  )
20
+ @worksheet.__send__(:prepare_tables, 1)
20
21
 
21
22
  table = @worksheet.tables[0]
22
23
  table.__send__(:assemble_xml_file)
@@ -22,6 +22,7 @@ class TestTable06 < Test::Unit::TestCase
22
22
  ]
23
23
  }
24
24
  )
25
+ @worksheet.__send__(:prepare_tables, 1)
25
26
 
26
27
  table = @worksheet.tables[0]
27
28
  table.__send__(:assemble_xml_file)
@@ -17,6 +17,7 @@ class TestTable07 < Test::Unit::TestCase
17
17
  :total_row => 1
18
18
  }
19
19
  )
20
+ @worksheet.__send__(:prepare_tables, 1)
20
21
 
21
22
  table = @worksheet.tables[0]
22
23
  table.__send__(:assemble_xml_file)
@@ -23,6 +23,7 @@ class TestTable08 < Test::Unit::TestCase
23
23
  ]
24
24
  }
25
25
  )
26
+ @worksheet.__send__(:prepare_tables, 1)
26
27
 
27
28
  table = @worksheet.tables[0]
28
29
  table.__send__(:assemble_xml_file)
@@ -29,6 +29,7 @@ class TestTable09 < Test::Unit::TestCase
29
29
  ]
30
30
  }
31
31
  )
32
+ @worksheet.__send__(:prepare_tables, 1)
32
33
 
33
34
  table = @worksheet.tables[0]
34
35
  table.__send__(:assemble_xml_file)
@@ -15,6 +15,7 @@ class TestTable10 < Test::Unit::TestCase
15
15
  'C2:F13',
16
16
  {:name => 'MyTable'}
17
17
  )
18
+ @worksheet.__send__(:prepare_tables, 1)
18
19
 
19
20
  table = @worksheet.tables[0]
20
21
  table.__send__(:assemble_xml_file)
@@ -28,6 +28,7 @@ class TestTable11 < Test::Unit::TestCase
28
28
  ]
29
29
  }
30
30
  )
31
+ @worksheet.__send__(:prepare_tables, 1)
31
32
 
32
33
  table = @worksheet.tables[0]
33
34
  table.__send__(:assemble_xml_file)
@@ -28,6 +28,7 @@ class TestTable12 < Test::Unit::TestCase
28
28
  ]
29
29
  }
30
30
  )
31
+ @worksheet.__send__(:prepare_tables, 1)
31
32
 
32
33
  table = @worksheet.tables[0]
33
34
  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, 0, 1, 1, 2, 2)
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, 0, 1, 1, 2, 2)
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, 0, 1, 1, 2, 2)
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