-
-
Save rodrigovirgilio/1292555 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'poi' | |
# given an Excel spreadsheet whose first sheet (Sheet 1) has this data: | |
# A B C D E | |
# 1 4 A 2010-01-04 | |
# 2 3 B =DATE(YEAR($E$1), MONTH($E$1), A2) | |
# 3 2 C =DATE(YEAR($E$1), MONTH($E$1), A3) | |
# 4 1 D =DATE(YEAR($E$1), MONTH($E$1), A4) | |
workbook = POI::Workbook.open('spreadsheet.xlsx') | |
sheet = workbook.worksheets["Sheet 1"] | |
rows = sheet.rows | |
# get a cell's value -- returns the value as its proper type, evaluating formulas if need be | |
rows[0][0].value # => 4.0 | |
rows[0][1].value # => nil | |
rows[0][2].value # => 'A' | |
rows[0][3].value # => nil | |
rows[0][4].value # => 2010-01-04 as a Date instance | |
rows[1][4].value # => 2010-01-03 as a Date instance | |
rows[2][4].value # => 2010-01-02 as a Date instance | |
rows[3][4].value # => 2010-01-01 as a Date instance | |
# you can access a cell in array style as well... these snippets are all equivalent | |
workbook.sheets[0][2][2] # => 'C' | |
workbook[0][2][2] # => 'C' | |
workbook.sheets['Sheet 1'][2][2] # => 'C' | |
workbook['Sheet 1'][2][2] # => 'C' | |
# you can access a cell in 3D cell format too | |
workbook['Sheet 1!A1'] # => 4.0 | |
# you can even refer to ranges of cells | |
workbook['Sheet 1!A1:A3'] # => [4.0, 3.0, 2.0] | |
# if cells E1 - E4 were a named range, you could refer to those cells by its name | |
# eg. if the cells were named "dates"... | |
workbook['dates'] # => dates from E1 - E4 | |
# to get the Cell instance, instead of its value, just use the Workbook#cell method | |
workbook.cell('dates') # => cells that contain dates from E1 to E4 | |
workbook['Sheet 1!A1:A3'] # => cells that contain 4.0, 3.0, and 2.0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment