summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRandy Morgan <[email protected]>2012-05-09 08:21:39 +0900
committerRandy Morgan <[email protected]>2012-05-09 08:21:39 +0900
commitac0600f12fb15d1b3fe0cce1ca7a2dced4cf5285 (patch)
tree4552debc0d77b4e84b027b6be8fe90c8f17dc6bc
parent7aa25770f1d92a2b4aa2c20ef9eabf24920052f1 (diff)
downloadcaxlsx-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.rb4
-rw-r--r--lib/axlsx/workbook/worksheet/comment.rb3
-rw-r--r--test/drawing/tc_vml_drawing.rb24
-rw-r--r--test/workbook/worksheet/tc_cell.rb7
-rw-r--r--test/workbook/worksheet/tc_row.rb12
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))