#python #excel #pandas #xlsxwriter
Вопрос:
Я довольно новичок в python, но не в программировании как таковом.
В настоящее время я пытаюсь решить проблему, при которой я хочу записать в определенную ячейку уже существующего листа Excel на определенных условиях.
Это структура моего рабочего листа: рабочий лист excel
То, что я пытаюсь сделать, это получить текущую дату и время, как это:
current_date = date.today().strftime("%d.%m.%Y")
current_time = datetime.now().strftime("%H:%M")
Теперь, например, если сегодня 02.03.2021 и сейчас 09:09, я хочу написать в ячейку C4.
Я пробовал гуглить и начинаю верить, что это невозможно, но, возможно, у некоторых из вас, ребята, есть какие-то идеи.
Заранее большое вам спасибо.
Ответ №1:
Я бы предложил прочитать файл excel в фрейме данных pandas. Чем писать в любую ячейку, какую захочешь df.at[row, col] = some_value
. И чем вы могли бы записать его обратно в excel https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html
Ответ №2:
Конечно, это возможно, все возможно. Вот пример кода для достижения того, чего вы хотите:
import pandas as pd
import numpy as np
from datetime import datetime
# Create a test dataframe, normally you want to import it from a file using the read_excel method
df = pd.DataFrame([['11:00', np.nan, np.nan, np.nan],
['12:00', np.nan, np.nan, np.nan],
['13:00', np.nan, np.nan, np.nan],
['14:00', np.nan, np.nan, np.nan],
['15:00', np.nan, np.nan, np.nan]],
columns=['Time', '04.04.2021', '05.04.2021', '06.04.2021'])
# Get the current date and time, make sure they are in the same format as in your excel worksheet
current_date = datetime.now().strftime("%d.%m.%Y")
current_time = datetime.now().strftime("%H:00") # we only want the hour in 24-hour format
# Use the 'at' method to access a single value for a row/column label pair and write your value
df.at[df['Time'] == current_time, current_date] = 'some custom value'
df.to_csv('test.csv', index=False)
Я запустил скрипт в 5/4/2021, 14:20 по местному времени и получил следующий результат: