#ruby-on-rails #ruby #openoffice.org #excel-formula
#ruby-on-rails #рубин #openoffice.org #excel-формула #ruby
Вопрос:
У моего клиента есть закодированная функция, которая принимает 20 логических значений и выдает целочисленный результат.
Они сделали это с помощью Excel, в виде сложной формулы.
В новом веб-приложении ROR мне лучше перекодировать все это в Ruby или каким-то образом вызвать формулу Excel?
Я мог бы попытаться связаться с серверным экземпляром Excel или безголовым OpenOffice и связаться с ним, используя JACOB или OpenOffice API?
Ответ №1:
Вы можете использовать драгоценный камень электронной таблицы для чтения из файла Excel. Попробуйте следующий код, используя пример файла в том же каталоге, который называется ss.xls который имеет 1 в A1, 2 в B1 и =A1 B1 в C1.
#gem install spreadsheet
require 'spreadsheet'
book = Spreadsheet.open('ss.xls')
sheet = book.worksheet('Sheet1')
puts sheet.row(0)[2].value
value
Вызов возвращает последнее значение для ячейки, которое было вычислено Excel, с приведенным выше примером, который он выведет 3.0
Редактировать: Подробнее о драгоценном камне читайте здесь: http://spreadsheet.rubyforge.org/GUIDE_txt.html
Редактировать 2: Конечно, если вы работаете в Windows, вам не понадобится gem; вы просто можете использовать библиотеку win32ole, как описано здесь:http://www.ruby-doc.org/docs/ProgrammingRuby/html/win32.html
Комментарии:
1. Это, конечно, не вычисляет
TODAY()
иNOW()
. Он просто выводит последнее вычисленное значение, как это было в Excel.
Ответ №2:
Ответов нет, поэтому пока я предположу, что повторная реализация формулы в Ruby менее сложна, чем вызов Excel / OpenOffice.
Не стесняйтесь предоставить лучший ответ!
Комментарии:
1. Если бы вы могли запускать Python на своем сервере, вы могли бы использовать
xlwt.Formula
для анализа формул Excel.