Итак, это большая программа, в которой я пытаюсь автоматизировать многие задачи, но вот строчка, убивающая меня.Я использую Python 3.5.5 и Win32com для соединения Python и Excel.
ws.Cells(i,j).Value = '=BDP("' + tick.lstrip().rstrip() + \
'";"CUST_TRR_RETURN_HOLDING_PER";' + \
'"CUST_TRR_Start_DT='+ (day - dt.timedelta(1)).strftime("%Y%m%d") + \
'";"CUST_TRR_END_DT=' + day.strftime("%Y%m%d") + \
'";"CUSTOM_TOTAL_RETURN_START_PRICE=' + str(round(sp,2)) + \
'";"CUSTOM_TOTAL_RETURN_END_PRICE=' + str(round(ep,2)) +'")'
Так что если я изменю начало на
ws.Cells(i,j).Value = 'f=bdp....'
, чтобы оно больше не было формулой Excel,без проблем все идет в Excel правильно.Затем я могу удалить f вручную, и формула рассчитывается как ожидалось.Однако, когда я запускаю код, как он есть, я получаю сообщение об ошибке, что происходит исключение, и код останавливается.Я попытался с простой формулой '=2*6'
, и она отлично работает.
Я также попробовал Cells.Formula
вместо Cells.Value
, но я получаю ту же проблему.
Это очень расстраивает, так как это последнийчасть моего проекта.Все до и после является функциональным, поэтому любая помощь будет высоко ценится.
РЕДАКТИРОВАТЬ
Даже страннее, я только что попробовал, и это работает
ws.Cells(i,j).Value = 'f=BDP("' + tick.lstrip().rstrip() + \
'";"CUST_TRR_RETURN_HOLDING_PER";' + \
'"CUST_TRR_Start_DT='+ (day - dt.timedelta(1)).strftime("%Y%m%d") + \
'";"CUST_TRR_END_DT=' + day.strftime("%Y%m%d") + \
'";"CUSTOM_TOTAL_RETURN_START_PRICE=' + str(round(sp,2)) + \
'";"CUSTOM_TOTAL_RETURN_END_PRICE=' + str(round(ep,2)) +'")'
ws.Cells(i,j).Replace('f=', '=')
ТАК, когда я записываю ее, я проверяю, что это не формула, а затем делаю ее формулой, и она отлично работает.
Все еще пытаюсь понять, так как это не самый лучший подход.
Спасибо