diff options
| author | Stefan Daschek <[email protected]> | 2012-05-15 20:04:35 +0200 |
|---|---|---|
| committer | Stefan Daschek <[email protected]> | 2012-05-15 20:04:35 +0200 |
| commit | 80252d12123118f2ebbd9736931f3c0150cf1653 (patch) | |
| tree | 369e496714d95748cf6e1783b9432e64bf236617 | |
| parent | 9237511af7a89dca97b4583bba41cd15317f25ec (diff) | |
| download | caxlsx-80252d12123118f2ebbd9736931f3c0150cf1653.tar.gz caxlsx-80252d12123118f2ebbd9736931f3c0150cf1653.zip | |
Worksheet#merge_cells sometimes produced invalid merge ranges when given an array of cells.
Merging e.g. cells A9 and A10 resulted in invalid range "A10:A9".
| -rw-r--r-- | lib/axlsx/workbook/worksheet/worksheet.rb | 2 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_worksheet.rb | 10 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb index 2205b97d..887968e0 100644 --- a/lib/axlsx/workbook/worksheet/worksheet.rb +++ b/lib/axlsx/workbook/worksheet/worksheet.rb @@ -204,7 +204,7 @@ module Axlsx @merged_cells << if cells.is_a?(String) cells elsif cells.is_a?(Array) - cells = cells.sort { |x, y| x.r <=> y.r } + cells = cells.sort { |x, y| [x.index, x.row.index] <=> [y.index, y.row.index] } "#{cells.first.r}:#{cells.last.r}" end end diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb index 5366ab3d..81179dbd 100644 --- a/test/workbook/worksheet/tc_worksheet.rb +++ b/test/workbook/worksheet/tc_worksheet.rb @@ -382,7 +382,15 @@ class TestWorksheet < Test::Unit::TestCase assert_equal(@ws.merged_cells.size, 3) assert_equal(@ws.merged_cells.last, "A3:B3") end - + + def test_merge_cells_sorts_correctly_by_row_when_given_array + 10.times do |i| + @ws.add_row [i] + end + @ws.merge_cells [@ws.rows[8].cells.first, @ws.rows[9].cells.first] + assert_equal "A9:A10", @ws.merged_cells.first + end + def test_auto_filter assert(@ws.auto_filter.nil?) assert_raise(ArgumentError) { @ws.auto_filter = 123 } |
