Напишите формулу Excel для всех столбцов с python - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть документ Excel, и я хочу обновить столбец M согласно столбцу A. И я хочу начать со второй строки, чтобы сохранить заголовок первой строки.

Вот мой код;

import openpyxl
wb = openpyxl.load_workbook('D:\Documents\Desktop\deneme/formula.xlsx')
ws=wb['Sheet1']

for i, cellObj in enumerate(ws['M'], 1):
    cellObj.value = '=_xlfn.ISOWEEKNUM(A2)'.format(i)

wb.save('D:\Documents\Desktop\deneme/formula.xlsx')

Когда я запускаю этот код;

-первый заголовок строки изменяется.

- все столбцы в Excel "ISOWEEKNUM (A2)", но я хочу, чтобы он изменялся в соответствии с номером строки (A3, A4, A5 ... "ISOWEEKNUM (A3), ISOWEEKNUM (A4), ISOWEEKNUM (A5) .... ")

Редактировать:

Я обработал сейчас вопрос ISOWEEKNUM с кодом ниже. Я изменил A2 на A2: A5.

import openpyxl
wb = openpyxl.load_workbook('D:\Documents\Desktop\deneme/formula.xlsx')
ws=wb['Sheet1']

for i, cellObj in enumerate(ws['M'], 1):
    cellObj.value = '=_xlfn.ISOWEEKNUM(A2:A5)'.format(i)

wb.save('D:\Documents\Desktop\deneme/formula.xlsx')

Но все равно начинается с первого ряда.

1 Ответ

0 голосов
/ 03 апреля 2020

Вот ответ с использованием pandas.

Рассмотрим следующую таблицу:

enter image description here

Первый импорт pandas:

import pandas as pd

Затем загрузите третий лист вашей книги Excel в кадр данных с именем df:

df=pd.read_excel('D:\Documents\Desktop\deneme/formula.xlsx', sheet_name='Sheet3')

Обновите столбец column_to_update, используя столбец deneme. Строка ниже преобразует даты в столбце 'deneme' из строк в объекты datetime, а затем возвращает неделю года, связанную с каждой из этих дат.

df['Column_to_update'] = pd.to_datetime(df['deneme']).dt.week

Затем можно сохранить свой фрейм данных в новый Excel документ:

df.to_excel('./newspreadsheet.xlsx', index=False)

Вот результат:

enter image description here

Вы можете видеть, что значения в 'column_to_update' обновлены с 1, 2 и 3 до 12, 12 и 18.

...