From 758d3a457bac0358724150a893d1df16cd60b5b4 Mon Sep 17 00:00:00 2001 From: Jurriaan Pruis Date: Tue, 4 Mar 2014 23:11:17 +0100 Subject: Fix cell merging, #179 --- lib/axlsx/workbook/worksheet/cell.rb | 12 ++++++------ test/workbook/worksheet/tc_cell.rb | 7 +++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/axlsx/workbook/worksheet/cell.rb b/lib/axlsx/workbook/worksheet/cell.rb index 8dec8e92..3ecc73d7 100644 --- a/lib/axlsx/workbook/worksheet/cell.rb +++ b/lib/axlsx/workbook/worksheet/cell.rb @@ -307,12 +307,12 @@ module Axlsx # @see worksheet.merge_cells # @param [Cell, String] target The last cell, or str ref for the cell in the merge range def merge(target) - range_end = if target.is_a?(String) - target - elsif(target.is_a?(Cell)) - target.r - end - self.row.worksheet.merge_cells "#{self.r}:#{range_end}" unless range_end.nil? + start, stop = if target.is_a?(String) + [self.r, target] + elsif(target.is_a?(Cell)) + Axlsx.sort_cells([self, target]).map { |c| c.r } + end + self.row.worksheet.merge_cells "#{start}:#{stop}" unless stop.nil? end # Serializes the cell diff --git a/test/workbook/worksheet/tc_cell.rb b/test/workbook/worksheet/tc_cell.rb index f07cdd58..f9761330 100644 --- a/test/workbook/worksheet/tc_cell.rb +++ b/test/workbook/worksheet/tc_cell.rb @@ -225,6 +225,13 @@ class TestCell < Test::Unit::TestCase @c.merge @row.cells.last assert_equal(@c.row.worksheet.send(:merged_cells).last, "A1:C1") end + + def test_reverse_merge_with_cell + @c.row.add_cell 2 + @c.row.add_cell 3 + @row.cells.last.merge @c + assert_equal(@c.row.worksheet.send(:merged_cells).last, "A1:C1") + end def test_ssti assert_raise(ArgumentError, "ssti must be an unsigned integer!") { @c.send(:ssti=, -1) } -- cgit v1.2.3