Сравните значение ячейки таблицы со строкой в ​​ruby

Привет, я пытаюсь сравнить значение ячейки в электронной таблице со строкой, как показано ниже.

workbook = Spreadsheet::ParseExcel.parse(name)

#Get the first worksheet
worksheet = workbook.worksheet(0)
puts worksheet.cell(4,0).to_s 
puts "SecurityKey".to_s
puts "SecurityKey".to_s.eql? worksheet.cell(4,0).to_s

Я старался ==, .eq? и все другие возможные методы сравнения строк, но это всегда приводит к ложному, даже если две строки одинаковы. Вы можете помочь мне?

заранее спасибо

1 ответ

Решение

Клеточный объект имеет множество дочерних объектов и методов. Метод Value (чтение / запись) возвращает значение ячейки, поскольку оно хранится внутри. Метод Text (только для чтения) ячейки возвращает значение в том виде, в котором оно отображается в данный момент. Например, если ячейка имеет значение "1234.56789" в формате "Валюта", методы "Значение" и "Текст" возвращают разные значения.

http://rubyonwindows.blogspot.com/2007/04/automating-excel-with-ruby-rows-columns.html

Попробуйте использовать значение или текст

worksheet.Cells(4, 0).Value == "SecurityKey"
worksheet.Cells(4, 0).Text == "SecurityKey"

редактировать

Избегайте использования parseexcel. Попробуйте что-то вроде

require 'spreadsheet'

Spreadsheet.client_encoding = 'UTF-8'
workbook = Spreadsheet.open '/path/to/file.xls'
first_sheet = workbook.worksheet 0 # or name
cell = first_sheet.row(1).at(4)
Другие вопросы по тегам