2016-07-06 22 views
3

を使用して、名前でセル私はタイプSpreadsheet::Excel::Worksheetであるsheet変数を持っている場合は、今私たちが実行してB2にアクセス:アクセス `spreadsheet`宝石

MY_CUSTOM_CELL = [1, 1] 
sheet[*MY_CUSTOM_CELL] # => Contents of B2 

をLibreOfficeのでは(そして、私はエクセル確信しています)、私は "名前ボックス"でそのセルの名前を割り当てることができます。下の画像を参照してください。私はB2に「CUSTOM_NAME」という名前を付けました。

Giving a cell a custom name using the "Name Box"

代わり行/列座標を使用して、そのセルの内容にアクセスする、それは名前を介してアクセスすることができますか?これにより、セルが場所を変更した場合に将来の変更に適応することが容易になります。

sheet.find("CUSTOM_NAME") # => Contents of B2 

私はhereを見つけたが、私が探していたものを見つけることができませんでしたドキュメントを見ていた:私のような何かをしたいと思います。

宝石がすでに許可していない場合は、どうすれば自分でそれを実装するのですか?ここで

答えて

0

は大のxlsxファイルを解析するスプレッドシート宝石よりもはるかに高速である小川宝石、でそれを行う方法です。

require 'creek' 

workbook = Creek::Book.new some_file.xlsx # Change the file name to suit your needs 
worksheet = workbook.sheets[0] # Change the worksheet index to suit your needs. 

# Create hash with cell names (e.g., A1, B5) as keys and cell values as values 
cells = Hash.new 
    worksheet.rows.each do |row| 
    cells.merge!(row) 
    end 
end 

# To access the cell values, just use the corresponding hash keys 

# Set value for the A1 cell 
cells["A1"] = "foo" 

# Print value of C3 cell 
puts cells["C3"]