У меня есть лист Excel (.xlsx) с Много формул внутри.
у меня есть некоторые параметры, которые я хочу различаться, и некоторые результаты, в зависимости от этих параметров, изменение /зависимость от параметров, которые я хочу проанализировать. < /p>
, будучи хорошо осведомленным о дизайне экспериментов (как правило, отборки латинского гиперкуба), я хотел бы просто создать DOE (легко, для этого есть много хороших пакетов R /Python), чьи комбинации автоматически вводятся в хорошей ячейке в листе и сохраняют соответствующий вывод. < /p>
Типичным псевдокодом будет: < /p>
Код: Выделить всё
X = DOE(n samples, d vairables)
y = zeros(n,)
for i = 1:n
Change the adequate cells as x[i,1], ..., x[i,d]
Look at the cell containing the output and affect its value y[i]
end
< /code>
Я сначала попытался использовать df = pd.read_excel, изменить соответствующие ячейки DF, а затем df.to_excel, но проблема заключается в загрузке DF, «выходная ячейка» содержит числовую Значение, которое записывается обратно на шаге TO_EXCEL (так что больше не формула, следовательно, значение неверно). < /p>
Я затем попробовал с OpenPyxl, надеясь, что на этот раз формула не будет заменена По численному значению ... < /p>
На этот раз мне удастся изменить ячейку и визуализировать (модифицированные) параметры и модифицированный результат в Excel. Так что я очень счастлив ... за исключением того, что когда я пытаюсь прочитать результат, Python говорит, что это NAN при использовании Pd.read_excel или ничего не возвращает при использовании OpenPyxl, хотя я визуально вижу ячейку содержит (хорошее) число.
Вот мой код, надеясь, что вы сможете помочь мне < /p>
wb = load_workbook(file_path, data_only=False)
ws = wb[sheet_name]
ws['C3'] = 6500
wb.save("modified_file.xlsx")
# Visually, modified_file contains the modified value, and accordingly, my target cell, N32 has changed too!
# Ok great... let's store cell N32 of modified_file.xlsx as y[i] now!
wb_modif = load_workbook("modified_file.xlsx", data_only=True)
ws_modif = wb_modif[sheet_name]
ws_modif['N32'].value # output nothing (None if I store it in a variable), despite N32 has value 3189 in excel
pd.read_excel("modified_file.xlsx", sheet_name=sheet_name, header=None).at[31,13] # attempt to see N32's value --> nan
< /code>
Итак ... если случайно у вас есть представление о том, что мне делать, я был бы очень благодарен! Заранее большое спасибо за ваш отзыв
Подробнее здесь: https://stackoverflow.com/questions/794 ... xcel-sheet