2017-01-06 14 views
0

нашей конфигурация системыРубин win32ole камень без MS-Office установлен

OS      : Windows 2012 server 
Ms-office installed  : NO 
language     : Ruby 
gem used     : win32ole-pp 

мы используем win32ole с помощью "камня установить win32ole-PP", ниже код, чтобы прочитать файл первенствовать

require 'win32ole' 
    begin 
    xl = WIN32OLE.new('Excel.Application') 
     file = $testdatasheet 
     file = Dir::pwd + "/#{file}" 
     wb = xl.workbooks.Open(file) 

мы которые получают ниже сообщение об ошибке

unknown OLE server: `Excel.Application' 
    HRESULT error code:0x800401f3 
     Invalid class string (WIN32OLERuntimeError) 
./features/step_definitions/read_excel_steps.rb:107:in `initialize' 
./features/step_definitions/read_excel_steps.rb:107:in `new' 
./features/step_definitions/read_excel_steps.rb:107:in `get_recordcount' 
./features/support/env.rb:95:in `Around' 

мои вопросы

  1. мы должны Ms-служба установлена ​​как предварительное условие

  2. у нас есть какое-либо другое решение, а затем установить MS-Office

ответ

0

win32ole камень в основном интерфейс для внешних библиотек, установленных в вашей системе с использованием механизма OLE Windows. Он не приносит никакой фактической функциональности самостоятельно, кроме доступности, которую она предоставляет.

Теперь в вашем коде вы получаете доступ к функциям, предоставляемым Excel, используя библиотеку Excel.Application. Если вы не установили Excel, вы не сможете использовать эту функцию, поскольку ее просто нет.

Таким образом, единственным решением является установка Excel на компьютер, который запускает ваш код Ruby. Если это нежелательно, вы можете обновить свой код, чтобы использовать LibreOffice (или один из его производных) вместо этого и использовать его функции для управления файлами Excel.