Чтение файлов 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
?