没有安装ms-office的Ruby win32ole gem

时间:2017-01-06 16:47:05

标签: ruby rubygems win32ole jruby-win32ole

我们的系统配置

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

我们正在使用win32ole使用" gem install win32ole-pp",下面是读取excel文件的代码

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-office作为先决条件

  2. 我们还有其他解决方案,然后安装Ms-office

1 个答案:

答案 0 :(得分:0)

win32ole gem基本上是使用Windows的OLE机制安装在系统上的外部库的接口。除了它提供的可访问性之外,它本身不带任何实际的功能。

现在,在您的代码中,您正在使用Excel.Application库访问Excel提供的功能。除非您安装了Excel,否则您无法使用此功能,因为它不存在。

因此,唯一的解决方案是在运行Ruby代码的计算机上安装Excel。如果不希望这样,您可以更新代码以使用LibreOffice(或其衍生产品之一),并使用其功能来操作Excel文件。