从xlsx复制到另一个xlsx中的特定工作表

时间:2017-02-14 18:59:04

标签: python excel xlsx copying

我需要一些python的帮助。基本上我有2个文件(这个例子将是file1和file2)。 File1里面有几张,file2只有一张。所以在file2中完成一些工作后,我现在拥有了我需要的DataFrame。我需要将此DataFrame粘贴到file1中的一个特定工作表中。

File1

  A       B       C       D         E          F         G
<data>  <data>  <data>  <data>  <formula>  <formula>  <formula>
<data>  <data>  <data>  <data>  <formula>  <formula>  <formula>
<data>  <data>  <data>  <data>  <formula>  <formula>  <formula>
<data>  <data>  <data>  <data>  <formula>  <formula>  <formula>
<data>  <data>  <data>  <data>  <formula>  <formula>  <formula>
<data>  <data>  <data>  <data>  <formula>  <formula>  <formula>

File2

    A          B          C         D         
<Newdata>  <Newdata>  <Newdata>  <Newdata>
<Newdata>  <Newdata>  <Newdata>  <Newdata>
<Newdata>  <Newdata>  <Newdata>  <Newdata>
<Newdata>  <Newdata>  <Newdata>  <Newdata>
<Newdata>  <Newdata>  <Newdata>  <Newdata>
<Newdata>  <Newdata>  <Newdata>  <Newdata>

So now i need to update the file one with the new Data.

File1

    A          B          C         D           E          F         G         
<Newdata>  <Newdata>  <Newdata>  <Newdata>  <formula>  <formula>  <formula>
<Newdata>  <Newdata>  <Newdata>  <Newdata>  <formula>  <formula>  <formula>
<Newdata>  <Newdata>  <Newdata>  <Newdata>  <formula>  <formula>  <formula>
<Newdata>  <Newdata>  <Newdata>  <Newdata>  <formula>  <formula>  <formula>
<Newdata>  <Newdata>  <Newdata>  <Newdata>  <formula>  <formula>  <formula>
<Newdata>  <Newdata>  <Newdata>  <Newdata>  <formula>  <formula>  <formula>

因此,列E,F和G具有一些公式,这些公式由A,B,C,D列中的数据更新。

我尝试不同的选项来做到这一点。连接两个文件并显示我尝试的列,加载两个文件并使用新信息创建一个新文件...主要问题是在file1中我有几张表,我需要保留,因为列E,F和G(带公式的那个)将更新其他表格。

所以如果有人请帮我一把。谢谢,我将感谢您的帮助

1 个答案:

答案 0 :(得分:0)

毫无疑问,有一种更好的方法可以做到这一点,但这就是我能做到的:

from openpyxl import load_workbook
import os

os.chdir("Directory Path here")
wb = load_workbook('file.xlsx')
ws = wb.active
#or use the below to pick sheet as by name
# ws = wb.get_sheet_by_name
inde = []
val = []
for col in ws.iter_cols():
    for cell in col:
        h = cell.coordinate
        inde.append(h)
        v = cell.value
        val.append(v)
diction = dict(zip(inde,val))

wb1=load_workbook('file1.xlsx')
ws1 = wb1.active

for i in diction.keys():
    ws1[i] = diction[i]
    wb1.save('file1.xlsx')