Unable to parse Metadata Part
When I try to parse a xlsm file containing an instance of metadata part I receive the following message:
*** WARNING: storage class not found for metadata.xml (http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata)
WARNING: RubyXL::Workbook is not aware how to process RubyXL::GenericStorageObject
Reference to metadata part (page 81).
The simplest example that produce the error is the following:
def foo
workbook = RubyXL::Parser.parse_buffer(Allocation.first.file.download)
respond_with workbook.stream.read
end
It's not possible to open the exported file in Excel. I also tried the parse method using the file path, it results in the same warning message and the exported file is also not readable in Excel.
Am I doing something wrong, or is there any workaround I can apply to parse xlsm files with metadata part? Unfortunately I can't provide the file as it contains sensitive data from a third party.
Anyway, thank you for this amazing gem.
Monkey patched.
module RubyXL
class SheetMetadata < GenericStorageObject
CONTENT_TYPE = 'application/vnd.ms-excel.sheetMetadata'
REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata'
end
class Workbook
define_relationship(RubyXL::SheetMetadata)
end
end
@seki Can you please attach a sample file with which you are experiencing this issue?
Sorry, I can't show the sample file.
require 'rubyXL'
module RubyXL
class SheetMetadata < GenericStorageObject
CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml'
REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata'
end
class Workbook
define_relationship(RubyXL::SheetMetadata)
end
end
def foo(src, dest)
workbook = RubyXL::Parser.parse(src)
workbook.write(dest)
end
foo(ARGV.shift, ARGV.shift)
Sorry, I can't show the sample file.
require 'rubyXL' module RubyXL class SheetMetadata < GenericStorageObject CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml' REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata' end class Workbook define_relationship(RubyXL::SheetMetadata) end end def foo(src, dest) workbook = RubyXL::Parser.parse(src) workbook.write(dest) end foo(ARGV.shift, ARGV.shift)
Try to parse another xlsx file, i have the same problem today and this resolve the issue
Here is my monkeypatch for - I suppose - a Google Sheets document that has been exported as an Excel file:
# Monkeypatch
module RubyXL
class SheetMetadata < GenericStorageObject
CONTENT_TYPE = 'application/vnd.ms-excel.sheetMetadata'
REL_TYPE = 'http://customschemas.google.com/relationships/workbookmetadata'
end
class Workbook
define_relationship(RubyXL::SheetMetadata)
end
end
Can somebody give me a sample file that exhibits this behavior already?