Запись в определенную ячейку в excel при определенных условиях в python

#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 по местному времени и получил следующий результат:
введите описание изображения здесь