Sha256: 74bd9d711992eadbfa5c8c822aab0207b268e219477c698b1d8e8d161b4c9909
Contents?: true
Size: 1020 Bytes
Versions: 9
Compression:
Stored size: 1020 Bytes
Contents
require 'csv' module IOStreams module Xlsx class Reader < IOStreams::Reader # Convert a xlsx, or xlsm file into CSV format. def self.file(file_name, original_file_name: file_name, &block) # Stream into a temp file as csv Utils.temp_file_name('iostreams_csv') do |temp_file_name| ::File.open(temp_file_name, 'wb') { |io| new(file_name).each { |lines| io << lines.to_csv } } ::File.open(temp_file_name, 'rb', &block) end end def initialize(file_name) begin require 'creek' unless defined?(Creek::Book) rescue LoadError => e raise(LoadError, "Please install the 'creek' gem for xlsx streaming support. #{e.message}") end workbook = Creek::Book.new(file_name, check_file_extension: false) @worksheet = workbook.sheets[0] end # Returns each [Array] row from the spreadsheet def each @worksheet.rows.each { |row| yield row.values } end end end end
Version data entries
9 entries across 9 versions & 1 rubygems