diff options
| -rw-r--r-- | lib/axlsx/workbook/worksheet/pivot_table.rb | 14 | ||||
| -rw-r--r-- | test/workbook/worksheet/tc_pivot_table.rb | 16 |
2 files changed, 26 insertions, 4 deletions
diff --git a/lib/axlsx/workbook/worksheet/pivot_table.rb b/lib/axlsx/workbook/worksheet/pivot_table.rb index 60960392..455665a5 100644 --- a/lib/axlsx/workbook/worksheet/pivot_table.rb +++ b/lib/axlsx/workbook/worksheet/pivot_table.rb @@ -217,8 +217,18 @@ module Axlsx end str << '</rowItems>' end - if columns.empty? && data.size <= 1 - str << '<colItems count="1"><i/></colItems>' + if columns.empty? + if data.size > 1 + str << '<colFields count="1"><field x="-2"/></colFields>' + str << "<colItems count=\"#{data.size}\">" + str << '<i><x/></i>' + data[1..-1].each_with_index do |datum_value,i| + str << "<i i=\"#{i + 1}\"><x v=\"#{i + 1}\"/></i>" + end + str << '</colItems>' + else + str << '<colItems count="1"><i/></colItems>' + end else str << ('<colFields count="' << columns.size.to_s << '">') columns.each do |column_value| diff --git a/test/workbook/worksheet/tc_pivot_table.rb b/test/workbook/worksheet/tc_pivot_table.rb index c7aa53cc..f676a72d 100644 --- a/test/workbook/worksheet/tc_pivot_table.rb +++ b/test/workbook/worksheet/tc_pivot_table.rb @@ -162,15 +162,27 @@ class TestPivotTable < Test::Unit::TestCase pt.data = [ {ref: "Gross amount", num_fmt: 2}, {ref: "Net amount", num_fmt: 2}, + {ref: "Margin", num_fmt: 2}, ] end xml = pivot_table.to_xml_string + assert(!xml.include?('dataOnRows')) assert(xml.include?('colFields')) + assert(xml.include?('colItems')) + + doc = Nokogiri::XML(pivot_table.to_xml_string) + + assert_equal('1', doc.at_css('colFields')['count']) + assert_equal('-2', doc.at_css('colFields field')['x']) + + assert_equal('3', doc.at_css('colItems')['count']) + assert_equal( 3, doc.at_css('colItems').children.size) + assert_nil( doc.at_css('colItems i')['x']) + assert_equal('1', doc.at_css('colItems i[i=1] x')['v']) + assert_equal('2', doc.at_css('colItems i[i=2] x')['v']) - assert(!xml.include?('dataOnRows')) - assert(!xml.include?('colItems')) end def test_pivot_table_with_only_one_data_row |
