class RubyXL::OOXMLTopLevelObject
Extension class providing functionality for
top-level OOXML objects that are represented by their own .xml
files in .xslx
zip container.
Constants
- ROOT
- SAVE_ORDER
Attributes
Public Class Methods
Generates the top-level OOXML object by parsing its XML file from the
contents of the .xslx
container.
Parameters¶ ↑
-
zip_file
-.xslx
file asZip::File
object -
file_path
- path to the subject file inside the.xslx
zip archive
# File lib/rubyXL/objects/ooxml_object.rb, line 437 def self.parse_file(zip_file, file_path) entry = zip_file.find_entry(RubyXL::from_root(file_path)) # Accomodate for Nokogiri Java implementation which is incapable of reading from a stream entry && (entry.get_input_stream { |f| parse(defined?(JRUBY_VERSION) ? f.read : f) }) end
Sets the list of namespaces on this object to be added when writing out XML. Valid only on top-level objects.
Parameters¶ ↑
-
namespace_hash
- Hash of namespaces in the form of"url" => "prefix"
Examples¶ ↑
set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil, 'http://schemas.openxmlformats.org/officeDocument/2006/relationships' => 'r')
# File lib/rubyXL/objects/ooxml_object.rb, line 429 def self.set_namespaces(namespace_hash) self.class_variable_set(:@@ooxml_namespaces, namespace_hash) end
Public Instance Methods
Saves the contents of the object as XML to respective location in
.xslx
zip container.
Parameters¶ ↑
-
zipfile
- ::Zip::File to which the resulting XNMML should be added.
# File lib/rubyXL/objects/ooxml_object.rb, line 446 def add_to_zip(zip_stream) xml_string = write_xml return false if xml_string.empty? zip_stream.put_next_entry(RubyXL::from_root(self.xlsx_path)) zip_stream.write(xml_string) true end
# File lib/rubyXL/objects/ooxml_object.rb, line 454 def file_index root.rels_hash[self.class].index{ |f| f.equal?(self) }.to_i + 1 end
Prototype method. For top-level OOXML object, returns the path at which the
current object's XML file is located within the .xlsx
zip
container.
# File lib/rubyXL/objects/ooxml_object.rb, line 419 def xlsx_path raise 'Subclass responsebility' end