From b22c17ca4ab0ecf1b105719898decfd19f580085 Mon Sep 17 00:00:00 2001 From: Jonathan Tron Date: Mon, 8 Oct 2012 15:23:05 +0200 Subject: Fix worksheet name escaping and cell sorting in Axlsx.cell_range We've discovered that Excel do not allow ' in defined_names to reference a worksheet name. All it does allow is to escape the simple quote by doubling it. Given that Worksheet#name is escaped using HTMLEntities, a simple quote appears as ' we're simply replacing it by the correct '' when using absolute reference to worksheet range. --- test/tc_axlsx.rb | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'test/tc_axlsx.rb') diff --git a/test/tc_axlsx.rb b/test/tc_axlsx.rb index fe3b7edd..4901ede2 100644 --- a/test/tc_axlsx.rb +++ b/test/tc_axlsx.rb @@ -14,8 +14,26 @@ class TestAxlsx < Test::Unit::TestCase } end - def test_cell_range - #To do + def test_cell_range_empty_if_no_cell + assert_equal(Axlsx.cell_range([]), "") + end + + def test_cell_range_relative + p = Axlsx::Package.new + ws = p.workbook.add_worksheet + row = ws.add_row + c1 = row.add_cell + c2 = row.add_cell + assert_equal(Axlsx.cell_range([c2, c1], false), "A1:B1") + end + + def test_cell_range_absolute + p = Axlsx::Package.new + ws = p.workbook.add_worksheet :name => "Sheet <'>\" 1" + row = ws.add_row + c1 = row.add_cell + c2 = row.add_cell + assert_equal(Axlsx.cell_range([c2, c1], true), "'Sheet <''>" 1'!$A$1:$B$1") end def test_name_to_indices -- cgit v1.2.3