3

sheet型の変数がある場合Spreadsheet::Excel::Worksheet、今は次のようにしてアクセスB2します。

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

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

を使用してセルにカスタム名を付ける

行/列座標を使用してそのセルの内容にアクセスする代わりに、名前を介してアクセスすることは可能ですか? これにより、セルの場所が変更された場合に、将来の変更に適応しやすくなります。私は次のようなことをしたいと思います:

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

ここにあるドキュメントを見ていましたが、探しているものが見つかりませんでした。

gem でまだ許可されていない場合、自分で実装するにはどうすればよいでしょうか?

4

2 に答える 2

0

他の答えは良い代替案かもしれませんが (私は個人的に未確認ではありません)、この質問に対する答えはnoです。

スプレッドシートの問題 - 機能 - 行と列だけでなく、名前でセルを取得する

現在、スプレッドシート gem を使用して名前でセルを取得する方法はありません。

于 2016-07-11T13:41:04.423 に答える
0

大規模な xlsx ファイルを解析する場合、スプレッドシートの gemよりもはるかに高速なクリークの gemを使用してそれを行う方法を次に示します。

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"]
于 2016-07-06T23:09:30.050 に答える