Method: Cosmos::ExcelSpreadsheet#initialize
- Defined in:
- lib/cosmos/win32/excel.rb
#initialize(filename, archive: nil) ⇒ ExcelSpreadsheet
Returns a new instance of ExcelSpreadsheet.
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/cosmos/win32/excel.rb', line 71 def initialize(filename, archive: nil) if archive time = Time.now.sys = sprintf("%04u_%02u_%02u_%02u_%02u_%02u", time.year, time.month, time.mday, time.hour, time.min, time.sec) # If archive is true we use the system LOGS path if archive == true archive = Cosmos::System.paths['LOGS'] end archive = File.join(archive, "#{}_#{File.basename(filename)}") FileUtils.cp filename, archive File.chmod(0444, archive) # Mark read-only end begin excel = WIN32OLE.new('excel.application') excel.visible = false wb = excel.workbooks.open(filename) @worksheets = [] @lkup = {} count = wb.worksheets.count count.times do |index| ws = wb.worksheets(index + 1) @worksheets << ExcelWorksheet.new(ws) @lkup[ws.name] = @worksheets[-1] end ensure if excel excel.DisplayAlerts = false excel.quit end excel = nil GC.start end end |