使用“电子表格”按名称访问单元格 gem
Access a cell by name using the `spreadsheet` gem
如果我有一个类型为 Spreadsheet::Excel::Worksheet
的 sheet
变量,现在我们可以通过以下方式访问 B2
:
MY_CUSTOM_CELL = [1, 1]
sheet[*MY_CUSTOM_CELL] # => Contents of B2
在 LibreOffice 中(我确定 Excel),我可以为 "Name Box" 中的单元格指定一个名称。看下图,我给B2取了个名字"CUSTOM_NAME".
不是使用 row/column 坐标访问该单元格的内容,是否可以通过名称 访问它?如果单元改变位置,这将使它更容易适应未来的变化。我想做类似的事情:
sheet.find("CUSTOM_NAME") # => Contents of B2
我正在查看找到的文档 here,但无法找到我要查找的内容。
如果 gem 不允许,我将如何自己实施?
下面是如何使用 creek gem,它比 电子表格 [=17 快得多=] 解析大型 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"]
虽然其他答案可能是一个不错的选择(我个人没有验证过),但这个问题的答案是没有。
Spreadsheet Issue - Feature - Retrieve a cell by its name, not just row and column
目前无法使用电子表格 gem.
按名称检索单元格
如果我有一个类型为 Spreadsheet::Excel::Worksheet
的 sheet
变量,现在我们可以通过以下方式访问 B2
:
MY_CUSTOM_CELL = [1, 1]
sheet[*MY_CUSTOM_CELL] # => Contents of B2
在 LibreOffice 中(我确定 Excel),我可以为 "Name Box" 中的单元格指定一个名称。看下图,我给B2取了个名字"CUSTOM_NAME".
不是使用 row/column 坐标访问该单元格的内容,是否可以通过名称 访问它?如果单元改变位置,这将使它更容易适应未来的变化。我想做类似的事情:
sheet.find("CUSTOM_NAME") # => Contents of B2
我正在查看找到的文档 here,但无法找到我要查找的内容。
如果 gem 不允许,我将如何自己实施?
下面是如何使用 creek gem,它比 电子表格 [=17 快得多=] 解析大型 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"]
虽然其他答案可能是一个不错的选择(我个人没有验证过),但这个问题的答案是没有。
Spreadsheet Issue - Feature - Retrieve a cell by its name, not just row and column
目前无法使用电子表格 gem.
按名称检索单元格