lib/rubyXL/objects/chartsheet.rb
require 'rubyXL/objects/ooxml_object'
require 'rubyXL/objects/simple_types'
require 'rubyXL/objects/extensions'
require 'rubyXL/objects/relationships'
require 'rubyXL/objects/sheet_common'
module RubyXL
# http://www.schemacentral.com/sc/ooxml/e-ssml_sheetProtection-4.html
class ChartsheetProtection < OOXMLObject
define_attribute(:password, :string)
define_attribute(:content, :bool, :default => false)
define_attribute(:objects, :bool, :default => false)
define_element_name 'sheetProtection'
end
# http://www.schemacentral.com/sc/ooxml/e-ssml_sheetPr-4.html
class ChartsheetProperties < OOXMLObject
define_attribute(:published, :bool, :default => true)
define_attribute(:codeName, :string)
define_child_node(RubyXL::Color, :node_name => :tabColor)
define_element_name 'sheetPr'
end
# http://www.schemacentral.com/sc/ooxml/e-ssml_pageSetup-5.html
class ChartsheetPageSetup < OOXMLObject
define_attribute(:paperSize, :int, :default => 1)
define_attribute(:firstPageNumber, :int, :default => 1)
define_attribute(:orientation, RubyXL::ST_Orientation, :default => 'default')
define_attribute(:usePrinterDefaults, :bool, :default => true)
define_attribute(:blackAndWhite, :bool, :default => false)
define_attribute(:draft, :bool, :default => false)
define_attribute(:useFirstPageNumber, :bool, :default => false)
define_attribute(:horizontalDpi, :int, :default => 600)
define_attribute(:verticalDpi, :int, :default => 600)
define_attribute(:copies, :int, :default => 1)
define_attribute(:'r:id', :string)
define_element_name 'pageSetup'
end
# http://www.schemacentral.com/sc/ooxml/e-ssml_sheetView-2.html
class ChartsheetView < OOXMLObject
define_attribute(:tabSelected, :bool, :default => false)
define_attribute(:zoomScale, :int, :default => 100)
define_attribute(:workbookViewId, :int, :required => true, :default => 0 )
define_attribute(:zoomToFit, :bool, :default => false)
define_child_node(RubyXL::ExtensionStorageArea)
define_element_name 'sheetView'
end
# http://www.schemacentral.com/sc/ooxml/e-ssml_sheetViews-4.html
class ChartsheetViews < OOXMLObject
define_child_node(RubyXL::ChartsheetView, :collection => true)
define_child_node(RubyXL::ExtensionStorageArea)
define_element_name 'sheetViews'
end
# http://www.schemacentral.com/sc/ooxml/e-ssml_chartsheet.html
class Chartsheet < OOXMLTopLevelObject
define_child_node(RubyXL::ChartsheetProperties)
define_child_node(RubyXL::ChartsheetViews)
define_child_node(RubyXL::ChartsheetProtection)
define_child_node(RubyXL::CustomSheetViews)
define_child_node(RubyXL::PageMargins)
define_child_node(RubyXL::ChartsheetPageSetup)
define_child_node(RubyXL::HeaderFooterSettings)
define_child_node(RubyXL::RID, :node_name => :drawing)
define_child_node(RubyXL::RID, :node_name => :legacyDrawing)
define_child_node(RubyXL::RID, :node_name => :legacyDrawingHF)
define_child_node(RubyXL::RID, :node_name => :picture)
define_child_node(RubyXL::WebPublishingItems)
define_child_node(RubyXL::ExtensionStorageArea)
define_element_name 'chartsheet'
set_namespaces('xmlns' => 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
'xmlns:r' => 'http://schemas.openxmlformats.org/officeDocument/2006/relationships')
def sheet_index
@workbook.worksheets.select{ |sheet| sheet.is_a?(self.class) }.index{ |sheet| sheet.equal?(self) }
end
def filepath
File.join('xl', 'chartsheets', "sheet#{sheet_index + 1}.xml")
end
def rel_type
'chartsheet'
end
attr_accessor :workbook, :sheet_name, :sheet_id
end
end