Чтение файлов Excel из Revit Python Shell

Я пытаюсь прочитать файл Excel из Revit 2017 API, используя Revit Python Shell. По сути, я понятия не имею, что я делаю, но я попробовал это: http://wiki.theprovingground.org/revit-api-py-excel, но я получаю ошибку:

Трассировка (последний вызов был последним): файл "", строка 1, в EnvironmentError: System.Runtime.InteropServices.COMException (0x800401F3): неверная строка класса (исключение из HRESULT: 0x800401F3 (CO в System.Runtime.InteropServices.Marshal.CIDF (String progId, Guid& clsid) в System.Runtime.InteropServices.Marshal.GetActiveObject(String progID) в Microsoft.Scripting.Interpreter.FuncCallInstruction`2.Run(кадр InterpretedFrame) в Microsoft.Scripting.Inprepreter.Inmepreter) в Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 arg0, T1 arg1, T2 arg2, T3 arg3) в IronPython.Compiler.Ast.CallExpression.Invoke1Instruction.raun(Interpreted)) в Microsoft.Scripting.Interpreter.Interpreter.Run (кадр InterpretedFrame) в Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1) в IronPython.Compiler.PythonScriptCode.RteWorker) в IronPython.Hosting.PythonCommandLine.<>c__DisplayClass1.b__0()

при запуске: System.Runtime.InteropServices.Marshal.GetActiveObject('Excel.Application')

Я делаю это на компьютере с Windows 7.

Кроме того, я попробовал почти все модули, которые я нашел в сети, которые должны помогать открывать файлы xlsx, но каждый раз, когда я получаю сообщение об ошибке, в какой-то момент. Кто-нибудь может помочь в этом? Это также могут быть файлы ods.

Спасибо! Arnaud.

2 ответа

Код, который вы используете (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. Этот вопрос обсуждает некоторые проблемы с использованием xlrd в IronPython

Зачем использовать собственный формат файла, такой как XLS вместо чего-то разумного, простого и открытого как CSV?

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

Другие вопросы по тегам