Class: Legion::Data::Extract::Handlers::Xlsx
- Inherits:
-
Base
- Object
- Base
- Legion::Data::Extract::Handlers::Xlsx
show all
- Defined in:
- lib/legion/data/extract/handlers/xlsx.rb
Class Method Summary
collapse
Methods inherited from Base
available?, for_type, inherited, register, supported_types
#handle_exception
Class Method Details
.extensions ⇒ Object
9
|
# File 'lib/legion/data/extract/handlers/xlsx.rb', line 9
def self.extensions = %w[.xlsx .xls]
|
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
# File 'lib/legion/data/extract/handlers/xlsx.rb', line 12
def self.(source)
require 'rubyXL'
require 'rubyXL/convenience_methods'
workbook = ::RubyXL::Parser.parse(source)
sheets = []
workbook.worksheets.each do |sheet|
rows = sheet.each.filter_map do |row|
next unless row
row.cells.map { |c| c&.value.to_s }.join(', ')
end
sheets << "Sheet: #{sheet.sheet_name}\n#{rows.join("\n")}" unless rows.empty?
end
text = sheets.join("\n\n")
{ text: text, metadata: { sheets: workbook.worksheets.size } }
rescue LoadError => e
handle_exception(e, level: :warn, handled: true, operation: :extract_xlsx, gem: gem_name)
{ text: nil, error: :gem_not_installed, gem: gem_name }
rescue StandardError => e
handle_exception(e, level: :warn, handled: true, operation: :extract_xlsx)
{ text: nil, error: e.message }
end
|
.gem_name ⇒ Object
10
|
# File 'lib/legion/data/extract/handlers/xlsx.rb', line 10
def self.gem_name = 'rubyXL'
|
.type ⇒ Object
8
|
# File 'lib/legion/data/extract/handlers/xlsx.rb', line 8
def self.type = :xlsx
|