lib/rubyXL/objects/root.rb in rubyXL-3.3.11 vs lib/rubyXL/objects/root.rb in rubyXL-3.3.12
- old
+ new
@@ -7,11 +7,11 @@
module RubyXL
class WorkbookRoot
@@debug = nil
- attr_accessor :filepath, :content_types, :rels_hash
+ attr_accessor :source_file_path, :content_types, :rels_hash
include RubyXL::RelationshipSupport
define_relationship(RubyXL::ThumbnailFile, :thumbnail)
define_relationship(RubyXL::CorePropertiesFile, :core_properties)
@@ -30,10 +30,11 @@
obj.relationship_container = RubyXL::OOXMLRelationshipsFile.new
obj.content_types = RubyXL::ContentTypes.new
obj
end
+ # Write <tt>.xlsx</tt> to a stream (useful for sending over HTTP)
def stream
stream = Zip::OutputStream.write_buffer { |zipstream|
self.rels_hash = {}
self.relationship_container.owner = self
collect_related_objects.compact.each { |obj|
@@ -57,37 +58,29 @@
def xlsx_path
OOXMLTopLevelObject::ROOT
end
- def self.parse_file(xl_file_path, opts = {})
- begin
- ::Zip::File.open(xl_file_path) { |zip_file|
- root = self.new
- root.filepath = xl_file_path
- root.content_types = RubyXL::ContentTypes.parse_file(zip_file, ContentTypes::XLSX_PATH)
- root.load_relationships(zip_file, OOXMLTopLevelObject::ROOT)
+ def self.parse_zip_file(zip_file)
+ root = self.new
+ root.content_types = RubyXL::ContentTypes.parse_file(zip_file, ContentTypes::XLSX_PATH)
+ root.load_relationships(zip_file, OOXMLTopLevelObject::ROOT)
- wb = root.workbook
- wb.root = root
+ wb = root.workbook
+ wb.root = root
- wb.sheets.each_with_index { |sheet, i|
- sheet_obj = wb.relationship_container.related_files[sheet.r_id]
+ wb.sheets.each_with_index { |sheet, i|
+ sheet_obj = wb.relationship_container.related_files[sheet.r_id]
- wb.worksheets[i] = sheet_obj # Must be done first so the sheet becomes aware of its number
- sheet_obj.workbook = wb
+ wb.worksheets[i] = sheet_obj # Must be done first so the sheet becomes aware of its number
+ sheet_obj.workbook = wb
- sheet_obj.sheet_name = sheet.name
- sheet_obj.sheet_id = sheet.sheet_id
- sheet_obj.state = sheet.state
- }
+ sheet_obj.sheet_name = sheet.name
+ sheet_obj.sheet_id = sheet.sheet_id
+ sheet_obj.state = sheet.state
+ }
- root
- }
- rescue ::Zip::Error => e
- raise e, "XLSX file format error: #{e}", e.backtrace
- end
+ root
end
-
end
end