class PoiSpreadsheet::Workbook

Attributes

j_book[RW]

Public Class Methods

load(file) click to toggle source
# 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
new() click to toggle source
# File lib/poi_spreadsheet.rb, line 53
def initialize
  @sheets = nil
end

Public Instance Methods

[](k) click to toggle source

Get sheet by name

# File lib/poi_spreadsheet.rb, line 86
def [](k)
  sheets[k]
end
_evaluator() click to toggle source
# File lib/poi_spreadsheet.rb, line 101
def _evaluator
  @_evaluator ||= j_book.getCreationHelper.createFormulaEvaluator
end
clone_sheet(index) click to toggle source
# File lib/poi_spreadsheet.rb, line 76
def clone_sheet index
  self.sheets << Worksheet.from_sheet(j_book.cloneSheet(index))
end
create_sheet(name) click to toggle source
# File lib/poi_spreadsheet.rb, line 72
def create_sheet name
  self.sheets << Worksheet.from_sheet(j_book.createSheet(name))
end
remove_sheet_at(index) click to toggle source
# File lib/poi_spreadsheet.rb, line 80
def remove_sheet_at index
  j_book.removeSheetAt(index)
  @sheets.delete_at(index)
end
save(file_name = @file_name) click to toggle source
# File lib/poi_spreadsheet.rb, line 90
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
sheets() click to toggle source

Get sheets

# 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 << sheet
    }
    sheets
  end
end