2015-07-16 1 views
0

Так что в основном то, что я пытаюсь сделать, читается в некоторых входных переменных из книги excel и записывает их в некоторые ячейки Model Model. Затем я сохраняю книгу, чтобы попытаться обновить данные в выходной модели. Поскольку ячейки модели Output Model являются формулами, я пытаюсь перезагрузить книгу как прочитанную data_only, а затем захватить эти ячейки и сохранить их на отдельном листе. Затем я сохраняю книгу еще раз.openpyxl data_only дает только один ответ при сохранении переменной

Проблема заключается в том, что значения, которые я пытаюсь захватить (LS, Sales, TPLH), в загруженной книге data_only считываются как ничто, а не значения, которые мне нужны. В конечном итоге я хочу сделать это в цикле, чтобы перебирать кучу входных переменных, но я хотел попробовать его с помощью только одного набора.

Если кто-нибудь знает, как лучше это сделать или что я делаю неправильно, пожалуйста, дайте мне знать! Я ценю любые отзывы. Вот мой код:

from openpyxl import load_workbook 
wb2 = load_workbook("Z:\\PythonFiles\\testexcel.xlsx") 
sh2 = wb2.get_sheet_by_name("Output Model") 
sh= wb2.get_sheet_by_name('OptimizationData') 

ForeCast = sh.cell(row=3, column=2).value 
sh2.cell(row=3, column=6).value=ForeCast 
wb2.save("Z:\\PythonFiles\\testexcel.xlsx") 

wb = load_workbook("Z:\\PythonFiles\\testexcel.xlsx", data_only =True) 
sh3 = wb.get_sheet_by_name("Output Model") 
sh4 = wb.get_sheet_by_name("OptimizationData") 

LS=sh3.cell(row=11, column=3).value 
Sales = sh3.cell(row=12, column=3).value 
TPLH = sh3.cell(row=13, column=3).value 

sh4.cell(row=3, column=7).value=LS 
sh4.cell(row=3, column=8).value=Sales 
sh4.cell(row=3, column=9).value=TPLH 

wb.save("Z:\\PythonFiles\\testexcel.xlsx") 
+0

Связанный, но не 100% -ный обман: https://stackoverflow.com/q/35681902/2988730 –

ответ

1

Openpyxl никогда не вычислить результат формулы. Это полностью зависит от другого приложения, сделавшего это. Это также означает, что такие значения удаляются из рабочей книги, когда она передается через openpyxl. Это происходит, как только вы сохраняете wb2. Если вы хотите получить доступ к этим значениям, вам нужно сначала открыть wb в режиме только для данных.

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