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.
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