用 python 写一个 excel 公式所有列

Write an excel formula all column with python

我有现有的 excel 文档,想根据 A 列更新 M 列。我想从第二行开始维护第一行 'header'.

这是我的代码;

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')

当我运行那个代码时;

-第一行 'header' 更改。

-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')

但还是从第一行开始。

这是使用 pandas 的答案。

让我们考虑以下价差sheet:

首先导入pandas:

import pandas as pd

然后将 excel 工作簿的第三个 sheet 加载到名为 df 的数据框中:

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

使用列 'deneme' 更新列 'column_to_update'。下面的行将 'deneme' 列中的日期从字符串转换为日期时间对象,然后 returns 与每个日期关联的一年中的第几周。

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

然后您可以将数据框保存到新的 excel 文档中:

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

结果如下:

您可以看到 'column_to_update' 中的值从 1、2 和 3 更新为 12、12 和 18。