从Revit Python Shell读取Excel文件

时间:2017-04-19 08:39:27

标签: revitpythonshell pyrevit

我正在尝试使用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文件。

谢谢! 阿诺。

2 个答案:

答案 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这样明智,简单和开放的内容?

https://en.wikipedia.org/wiki/Comma-separated_values