2016-01-25 4 views
0

Я пытаюсь вычислить xlwings. У меня есть следующий код Python:Определенная пользователем функция Python в xlwings

from xlwings import xlfunc 
from datetime import timedelta, datetime 

@xlfunc 
def convert(gmt): 

    gmtValue = datetime(int(gmt[6:10]), int(gmt[3:5]), int(gmt[0:2]), int(gmt[11:13]), int(gmt[14:16]), int(gmt[17:19])) 
    localTime = gmtValue - timedelta(seconds=(6*3600)) 
    return localTime 

Все это делает взять отметку времени строки, такие как 05/01/2016 14:25:56 GMT и снимает GMT и преобразует его в местное время (центральное время . в США) Я пытаюсь использовать этот код вместе с:

Sub convertToLocal() 
    RunPython(“import converToLocal; convertToLocal.convert(gmt)”) 
End Sub 

чтобы сделать определенную пользователем функцию, но Excel, кажется, не распознает код питона, даже если у меня есть модуль xlwings.bas импортируемого , Единственная ошибка, которую я получаю, это «Ошибка компиляции: ожидаемый конец Statement». Который, я думаю, просто означает, что Excel не распознает код python. Любая идея, как это исправить? Кроме того, каков правильный способ передать содержимое ячейки в код python?

ответ

1

RunPython и синтаксис декоратора - это два разных подхода. Чтобы выполнить пользовательские функции с декораторами, следуйте инструкциям here. Вам нужно будет импортировать эти функции с помощью надстройки, а не RunPython.

+0

Теперь я получаю «ошибку времени выполнения» 53: Файл не найден xlwings32.dll. " Когда я запускаю ImportPythonUDF. Я проверил в папке C: \ Anaconda3, и ее там нет, просто xlwings64.dll. Я попробовал «conda uninstall xlwings», а затем переустановил, но 32 все еще не существует. –

+0

Вы правы, похоже, проблема связана с последним пакетом conda. Пожалуйста, просто установите его с помощью pip, пока это не будет исправлено с помощью пакета conda. –

+0

Спасибо! Так оно и было. Или, по крайней мере, ошибка, которую я получаю сейчас, связана с astimezone() и не имеет ничего общего с xlwings, поскольку я получаю ее в ячейке Excel. –

Смежные вопросы