Python/Openpyxl使用公式复制和粘贴列

Python/Openpyxl使用公式复制和粘贴列,python,excel,openpyxl,Python,Excel,Openpyxl,我有一本带有工作表的工作簿,名为sheet#1。我想从工作表#1中复制一些列,并稍微更改列顺序。 首先,我创建了一个名为sheet#2的新工作表。我可以从第1页复制并粘贴到第2页,但是我发现openpyxl完全按照原样复制公式,所以我有一个问题。例如,表1中的列O有如下公式: O3=(M3*1)+(N3*1) 我将第1页中的列M移动到第2页中的列H,并将第1页中的列N移动到第2页中的列I。当我将工作表#1中的O列移动到工作表#2中的M列时,我遇到了问题。首先,表2中的列M的公式仍然是: M3=(

我有一本带有工作表的工作簿,名为sheet#1。我想从工作表#1中复制一些列,并稍微更改列顺序。 首先,我创建了一个名为sheet#2的新工作表。我可以从第1页复制并粘贴到第2页,但是我发现
openpyxl
完全按照原样复制公式,所以我有一个问题。例如,表1中的列
O
有如下公式:

O3=(M3*1)+(N3*1)

我将第1页中的列
M
移动到第2页中的列H,并将第1页中的列
N
移动到第2页中的列I。当我将工作表#1中的O列移动到工作表#2中的M列时,我遇到了问题。首先,表2中的列
M
的公式仍然是:

M3=(M3*1)+(N3*1)

我有一个循环参考问题,因为我试图用自己来计算自己。其次,如果我将第1页中的列
O
移动到第2页中的列
J
,我没有这个循环引用问题,但我的公式仍然混乱

我使用以下方式复制和粘贴:

范围(0,1000)内的i的
:
表2.单元格(行=i,列=12).值=表1.单元格(行=i,列=14).值
我在调用
load\u工作簿
时,用
true
false
尝试了
data\u only
,如下所示

my_工作簿=openpyxl.load_工作簿(args.input_文件,data_only=False)
对我来说都不管用
True
在第1页和第2页中获取所有零
False
获取如上所述的循环引用问题

有没有办法使用
openpyxl
包来解决我的问题?我认为只要在复制粘贴时,如果可以添加工作表名称来指定公式中的单元格,我的问题就解决了,如下所示:

M3=(“表1”M3*1)+(“表1”N3*1)


如果
openpyxl
无法解决此问题,是否有更好的软件包来解决此问题<代码>熊猫

我会先说我不是专家,但我会试一试

听你的问题,你似乎对熊猫不太熟悉。我会用熊猫来解决这个问题。也做一些额外的阅读熊猫它是如此强大!尤其是excel自动化

import pandas as pd

# Read the excel sheets to Pandas DataFrames
DataFrame1 = pd.read_excel("FileName.xlsx", sheetname='sheet_number_1')
DataFrame2 = pd.read_excel("FileName.xlsx", sheetname='sheet_number_2')
你应该先阅读你的工作表#2数据框,然后把那些没有公式的列从你的工作表#1数据框中带出来

#You can set columns equal to each other like this.
sheet2df['sheet_2_column_name'] = sheet1df['sheet_1_column_name']
这将把您选择的任何工作表1列中的所有数据带到您选择的任何工作表2列中

现在,对于带有公式的列。。。您提到的公式
(M3*1)+(N3*1)
现在将成为您的工作表2中的
(H3*1)+(I3*1)
。我不会用上面的方法把这些列带过来,相反我会这样做

#apply formula down each row in a column
DataFrame2['column_name_to_insert_formula_to'] = DataFrame2.apply(lambda row: '(H{}*1)+(I{}*1)'.format(row.name + 2), axis=1)
在这种情况下,可以将{}留空。此公式将向下迭代
{}
括号中的行号。实际上,您正在将
.format(row.name+2)
作为参数传递到括号中。我们还使用axis=1,因为您希望将其应用于列中的每一行。axis=1将为我们做到这一点

有关熊猫的更多信息。应用熊猫文档中的函数

有关熊猫中应用和Lambda用法的更多信息

我从未使用过熊猫,所以我没有经验。我听说它更强大,我只是想确认它可以解决我和熊猫的问题。似乎是这样。但我的问题是熊猫没有安装在我们的系统中,我无法自己安装:(.无论如何,谢谢你。为什么你不能安装?我觉得奇怪的是,你可以安装openpyxl和python,但不能安装Pandas。我建议你联系任何能够控制它的人,让他们允许你安装这个软件包。这将使你和其他许多人受益。祝你好运!