1

我正在尝试使用 Revit Python Shell 从 Revit 2017 API 读取 Excel 文件。基本上,我不知道我在做什么,但我试过这个:http ://wiki.theprovingground.org/revit-api-py-excel ,但我收到一个错误:

回溯(最后一次调用):文件“”,第 1 行,EnvironmentError:System.Runtime.InteropServices.COMException(0x800401F3):无效的类字符串(来自 HRESULT 的异常:0x800401F3(CO at System.Runtime.InteropServices.Marshal.CLSIDFromProgID) (String progId, Guid& clsid) 在 Microsoft.Scripting.Interpreter.FuncCallInstruction`2.Run(InterpretedFrame frame) at Microsoft.Scripting.InteropServices.Marshal.GetActiveObject(String progID) 在 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame ) 在 Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,Tret](T0 arg0, T1 arg1, T2 arg2, T3 arg3) 在 IronPython.Compiler.Ast.CallExpression.Invoke1Instruction.Run(InterpretedFrame 框架) 在 Microsoft 的 Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)。IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx) 在 IronPython.Hosting.PythonCommandLine.<>c__DisplayClass1.b__0() 的 Scripting.Interpreter.LightLambda.Run2[T0,T1,Tret](T0 arg0, T1 arg1)

运行时:System.Runtime.InteropServices.Marshal.GetActiveObject('Excel.Application')

我在 Windows 7 机器上执行此操作。

除此之外,我几乎尝试了我在网上找到的每个模块,这些模块应该有助于打开 xlsx 文件,但每次我都会在某些时候出错。有人可以帮忙吗?它也可以是 ods 文件。

谢谢!阿尔诺。

4

2 回答 2

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。这个问题讨论了在 IronPython中使用的一些问题xlrd

于 2017-04-20T09:12:44.623 回答
3

为什么要使用专有的文件格式,XLS而不是类似的合理、简单和开放的文件格式CSV

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

于 2017-04-20T09:12:10.273 回答