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