我正在编写一个脚本来编辑excel文件。我正在测试它是否从用户那里收集信息。
require 'rubygems'
require 'win32ole'
print "filpath?"
$filepath = $stdin.gets
print "sheet?"
$sheetname = $stdin.gets
excel = WIN32OLE.new('Excel.Application')
excel.visible = true
workbook = excel.workbooks.Open($filepath)
worksheet = workbook.Worksheets($sheetname)
worksheet.Cells(2,2).Value = 10
workbook.saved = true
workbook.Save
excel.ActiveWorkbook.Close(0)
excel.Quit()
当我直接在脚本中放入文件路径时,它可以正常工作。它可以查找excel文件并正常编辑。但是,当我从gets
语句中收集它时,它会给出以下错误消息:
test.rb:20:in `method_missing': (in OLE method `Open': ) (WIN32OLERuntimeError)
OLE error code:800A03EC in Microsoft Excel
Sorry, we couldn't find C:\filename.xlsx
. Is it possible it was moved, renamed or deleted?
HRESULT error code:0x80020009
Exception occurred.
from test.rb:20:in `<main>'
不确定发生了什么。我很乐意帮忙。
答案 0 :(得分:4)
当您使用gets
收到结束行字符时,它会附加到文件名中,但可能您的文件未命名。在.chomp
之后添加gets
。在将文件传递给win32ole之前检查文件的存在性和可访问性也更好。