-
Notifications
You must be signed in to change notification settings - Fork 253
/
parser.rb
29 lines (26 loc) · 928 Bytes
/
parser.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
module RubyXL
class Parser
# Parse <tt>.xslx</tt> file by reading it from local disk.
def self.parse(src_file_path)
begin
::Zip::File.open(src_file_path) { |zip_file|
root = RubyXL::WorkbookRoot.parse_zip_file(zip_file)
root.source_file_path = src_file_path
root.workbook
}
rescue ::Zip::Error => e
raise e, "XLSX file format error: #{e}", e.backtrace
end
end
# Parse <tt>.xslx</tt> file contained in a stream (useful for receiving over HTTP).
def self.parse_buffer(buffer)
root = nil # Zip::File.open_buffer somehow fails to return the value from the block :(
begin
::Zip::File.open_buffer(buffer) { |zip_file| root = RubyXL::WorkbookRoot.parse_zip_file(zip_file) }
root.workbook
rescue ::Zip::Error => e
raise e, "XLSX file format error: #{e}", e.backtrace
end
end
end
end