我正在尝试使用Revit Python Shell从Revit 2017 API中读取Excel文件。基本上,我不知道我在做什么,但我尝试了这个:http://wiki.theprovingground.org/revit-api-py-excel,但我收到了错误:
运行时追踪(最近一次通话): 文件"",第1行,in EnvironmentError:System.Runtime.InteropServices.COMException(0x800401F3):无效的类字符串(来自HRESULT的异常:0x800401F3(CO 在System.Runtime.InteropServices.Marshal.CLSIDFromProgID(String progId,Guid& clsid) 在System.Runtime.InteropServices.Marshal.GetActiveObject(String progID) 在Microsoft.Scripting.Interpreter.FuncCallInstruction`2.Run(InterpretedFrame框架) 在Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame框架) 在Microsoft.Scripting.Interpreter.LightLambda.Run4 [T0,T1,T2,T3,TRet](T0 arg0,T1 arg1,T2 arg2,T3 arg3) at IronPython.Compiler.Ast.CallExpression.Invoke1Instruction.Run(InterpretedFrame frame) 在Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame框架) 在Microsoft.Scripting.Interpreter.LightLambda.Run2 [T0,T1,TRet](T0 arg0,T1 arg1) 在IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx) 在IronPython.Hosting.PythonCommandLine。<> c__DisplayClass1.b__0()
: System.Runtime.InteropServices.Marshal.GetActiveObject(' Excel.Application&#39)
我在Windows 7机器上执行此操作。
就此而言,我几乎尝试了我在网上找到的每个模块,这些模块应该有助于打开xlsx文件,但每次我都会在某些时候获得错误。有人可以提供帮助吗?它也可以是ods文件。
谢谢! 阿诺。
答案 0 :(得分:4)
您正在使用的代码(System.Runtime.InteropServices.Marshal.GetActiveObject('Excel.Application')
)假设Excel已在运行。
请检查此页面以了解其他方法:http://www.ironpython.info/index.php?title=Interacting_with_Excel
基本上,试试这个:
import clr
clr.AddReference("Microsoft.Office.Interop.Excel")
import Microsoft.Office.Interop.Excel as Excel
excel = Excel.ApplicationClass()
如果要获取活动实例(如果有),可以使用try/except
块中的第一个方法,只创建一个新的excel实例(如果没有找到)。
另一种选择是使用模块xlrd
- 这样您就不需要安装Excel了。 This question discusses some issues with using xlrd
in IronPython
答案 1 :(得分:2)
为什么要使用像XLS
这样的专有文件格式,而不是像CSV
这样明智,简单和开放的内容?