aboutsummaryrefslogtreecommitdiffstats
path: root/lib/roo/formatters/xml.rb
blob: ebb8cdeac82118d3798d5108499dba740e5fab68 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# returns an XML representation of all sheets of a spreadsheet file
module Roo
  module Formatters
    module XML
      def to_xml
        Nokogiri::XML::Builder.new do |xml|
          xml.spreadsheet do
            sheets.each do |sheet|
              self.default_sheet = sheet
              xml.sheet(name: sheet) do |x|
                if first_row && last_row && first_column && last_column
                  # sonst gibt es Fehler bei leeren Blaettern
                  first_row.upto(last_row) do |row|
                    first_column.upto(last_column) do |col|
                      next if empty?(row, col)

                      x.cell(cell(row, col),
                      row: row,
                      column: col,
                      type: celltype(row, col))
                    end
                  end
                end
              end
            end
          end
        end.to_xml
      end
    end
  end
end