diff options
| author | Randy Morgan <[email protected]> | 2012-05-09 08:21:39 +0900 |
|---|---|---|
| committer | Randy Morgan <[email protected]> | 2012-05-09 08:21:39 +0900 |
| commit | ac0600f12fb15d1b3fe0cce1ca7a2dced4cf5285 (patch) | |
| tree | 4552debc0d77b4e84b027b6be8fe90c8f17dc6bc | |
| parent | 7aa25770f1d92a2b4aa2c20ef9eabf24920052f1 (diff) | |
| download | caxlsx-ac0600f12fb15d1b3fe0cce1ca7a2dced4cf5285.tar.gz caxlsx-ac0600f12fb15d1b3fe0cce1ca7a2dced4cf5285.zip | |
patch nil row style issue
https://github.com/randym/axlsx/issues/91
| -rw-r--r-- | lib/axlsx/workbook/worksheet/cell.rb | 4 | ||||
| -rw-r--r-- | lib/axlsx/workbook/worksheet/comment.rb | 3 | ||||
| -rw-r--r-- | test/drawing/tc_vml_drawing.rb | 24 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_cell.rb | 7 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_row.rb | 12 |
5 files changed, 36 insertions, 14 deletions
diff --git a/lib/axlsx/workbook/worksheet/cell.rb b/lib/axlsx/workbook/worksheet/cell.rb index fe95e529..91efa8d9 100644 --- a/lib/axlsx/workbook/worksheet/cell.rb +++ b/lib/axlsx/workbook/worksheet/cell.rb @@ -288,9 +288,11 @@ module Axlsx # @param [String] str The string index the cell content will be appended to. Defaults to empty string. # @return [String] xml text for the cell def to_xml_string(r_index, c_index, str = '') - return str if @value.nil? str << '<c r="' << Axlsx::cell_r(c_index, r_index) << '" s="' << @style.to_s << '" ' + return str << '/>' if @value.nil? + case @type + when :string #parse formula if @value.start_with?('=') diff --git a/lib/axlsx/workbook/worksheet/comment.rb b/lib/axlsx/workbook/worksheet/comment.rb index 7753a71a..708b6ac4 100644 --- a/lib/axlsx/workbook/worksheet/comment.rb +++ b/lib/axlsx/workbook/worksheet/comment.rb @@ -88,7 +88,8 @@ module Axlsx # by default, all columns are 5 columns wide and 5 rows high def initialize_vml_shape ws = self.comments.worksheet - @vml_shape = VmlShape.new(self, :row => ws[ref].row.index, :column => ws[ref].index) do |vml| + pos = Axlsx::name_to_indices(ref) + @vml_shape = VmlShape.new(self, :row => pos[1], :column => pos[0]) do |vml| vml.left_column = vml.row + 1 vml.right_column = vml.column + 4 vml.top_row = vml.row diff --git a/test/drawing/tc_vml_drawing.rb b/test/drawing/tc_vml_drawing.rb new file mode 100644 index 00000000..741fc9e3 --- /dev/null +++ b/test/drawing/tc_vml_drawing.rb @@ -0,0 +1,24 @@ +require 'tc_helper.rb' + +class TestVmlDrawing < Test::Unit::TestCase + + def setup + p = Axlsx::Package.new + wb = p.workbook + @ws = wb.add_worksheet + @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO' + @vml_drawing = @ws.comments.vml_drawing + end + + def test_initialize + assert_raise(ArgumentError) { Axlsx::VmlDrawing.new } + end + + def test_to_xml_string + str = '<?xml version="1.0" encoding="UTF-8"?>' + str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '">' + str << @vml_drawing.to_xml_string(0) + doc = Nokogiri::XML(str) + end + +end diff --git a/test/workbook/worksheet/tc_cell.rb b/test/workbook/worksheet/tc_cell.rb index 12b4fb4c..edb3ae85 100644 --- a/test/workbook/worksheet/tc_cell.rb +++ b/test/workbook/worksheet/tc_cell.rb @@ -244,6 +244,13 @@ class TestCell < Test::Unit::TestCase c_xml = Nokogiri::XML(@c.to_xml_string(1,1)) assert_equal(c_xml.xpath("/c[@s=1]").size, 1) end + + def test_to_xml_string_nil + @c.value = nil + c_xml = Nokogiri::XML(@c.to_xml_string(1,1)) + assert_equal(c_xml.xpath("/c[@s=1]").size, 1) + end + def test_to_xml # TODO This could use some much more stringent testing related to the xml content generated! row = @ws.add_row [Time.now, Date.today, true, 1, 1.0, "text", "=sum(A1:A2)"] diff --git a/test/workbook/worksheet/tc_row.rb b/test/workbook/worksheet/tc_row.rb index f9765a7f..bc6d4139 100644 --- a/test/workbook/worksheet/tc_row.rb +++ b/test/workbook/worksheet/tc_row.rb @@ -27,18 +27,6 @@ class TestRow < Test::Unit::TestCase r.cells.each { |c| assert_equal(c.style,1) } end - def test_nil_cells - row = @ws.add_row([nil,1,2,nil,4,5,nil]) - r_s_xml = Nokogiri::XML(row.to_xml_string(0, '')) - assert_equal(r_s_xml.xpath(".//row/c").size, 4) - end - - def test_nil_cell_r - row = @ws.add_row([nil,1,2,nil,4,5,nil]) - r_s_xml = Nokogiri::XML(row.to_xml_string(0, '')) - assert_equal(r_s_xml.xpath(".//row/c").first['r'], 'B1') - assert_equal(r_s_xml.xpath(".//row/c").last['r'], 'F1') - end def test_index assert_equal(@row.index, @row.worksheet.rows.index(@row)) |
