Class: PoiSpreadsheet::Workbook

Inherits:
Object
  • Object
show all
Defined in:
lib/poi_spreadsheet.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWorkbook

Returns a new instance of Workbook.



53
54
55
# File 'lib/poi_spreadsheet.rb', line 53

def initialize
  @sheets = nil
end

Instance Attribute Details

#j_bookObject

Returns the value of attribute j_book.



36
37
38
# File 'lib/poi_spreadsheet.rb', line 36

def j_book
  @j_book
end

Class Method Details

.load(file) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/poi_spreadsheet.rb', line 38

def self.load file
  @file_name = file

  @workbook_class = Rjb::import('org.apache.poi.hssf.usermodel.HSSFWorkbook')
  @poifs_class = Rjb::import('org.apache.poi.poifs.filesystem.POIFSFileSystem')
  @file_input_class = Rjb::import('java.io.FileInputStream')
  @file_input = @file_input_class.new(file)

  book = new

  fs = @poifs_class.new(@file_input)
  book.j_book = @workbook_class.new(fs)
  book
end

Instance Method Details

#[](k) ⇒ Object

Get sheet by name



73
74
75
# File 'lib/poi_spreadsheet.rb', line 73

def [](k)
  sheets[k]
end

#_evaluatorObject



88
89
90
# File 'lib/poi_spreadsheet.rb', line 88

def _evaluator
  @_evaluator ||= j_book.getCreationHelper.createFormulaEvaluator
end

#save(file_name = @file_name) ⇒ Object



77
78
79
80
81
82
83
84
85
86
# File 'lib/poi_spreadsheet.rb', line 77

def save file_name = @file_name
  @file_output_class ||= Rjb::import('java.io.FileOutputStream')
  out = @file_output_class.new(file_name);

  begin
    j_book.write(out)
  ensure
    out.close();
  end
end

#sheetsObject

Get sheet names



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/poi_spreadsheet.rb', line 58

def sheets
  @sheets ||= begin
    sheets = {}
    self.j_book.getNumberOfSheets.times { |i|
      j_sheet = j_book.getSheetAt(i)
      sheet = Worksheet.from_sheet(j_sheet)
      sheet.book = self
      name = j_book.getSheetName(i)
      sheets[name] = sheet
    }
    sheets
  end
end