0

目前我正在打开一个这样的 Excel 文件

excel = WIN32OLE::new("excel.Application")
workbook = excel.Workbooks.Open('T:\\PointOfSale\\Projects\\Automated Testing\\MasterFile.xls')
worksheet = workbook.WorkSheets(1) # Get first workbook
site = worksheet.Range('A2').Value # Get the value at cell in worksheet.

它很好,但是当我将脚本移动到服务器时,我收到一条错误消息,提示找不到路径/文件。所以我决定使用一种通用的方式,比如当我打开一个文本文件时

excel = WIN32OLE::new("excel.Application")
workbook = excel.Workbooks.Open('../../../../Automated Testing/MasterFile.xls')
worksheet = workbook.WorkSheets(1) # Get first workbook
site = worksheet.Range('A2').Value # Get the value at cell in worksheet.

但我收到一条错误消息:

T:/PointOfSale/Projects/Automated Testing/CSA/Branch_Test/Res Processing/CancelRes/Canc_BE.rb:23:in method_missing': (in OLE methodOpen':) (WIN32OLERuntimeError) OLE 错误代码:Microsoft Excel 中的 800A03EC '../../.. /../Automated Testing/MasterFile.xls' 找不到。检查文件名的拼写,并验证文件位置是否正确。

如果您尝试从最近使用的文件列表中打开该文件,请确保该文件未被重命名、移动或删除。HRESULT 错误代码:0x80020009 发生异常。

你有什么主意吗?

4

2 回答 2

1

您需要脚本文件本身的相对位置,例如

path = "#{File.dirname(__FILE__)}/../../Automated Testing/MasterFile.xls"
workbook = excel.Workbooks.Open(path)

我无法确定您的脚本文件位于何处,因此您需要调整 /../ 引用的数量。

于 2013-03-21T12:30:32.567 回答
0

你也可以试试,

path = "#{Dir.pwd}/Automated Testing/MasterFile.xls"
workbook = excel.WorkBooks.Open(path)

Dir.pwd将输出你当前项目目录的绝对路径。

Dir.pwd
#> "/home/rails/projects/earthE/Blog"
于 2014-02-12T07:16:41.250 回答