用 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。
我有现有的 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。