Python-使用Pandas和openpyxl修改现有的Excel

时间:2019-03-14 09:21:53

标签: python excel pandas dataframe openpyxl

我有一个包含多张工作表的Excel文件(Celebrities.xlsx),我正在尝试修改一个名为Relationships的工作表,而不修改(或可能擦除)其他工作表。这就是我所做的。

import pandas as pd
from openpyxl import load_workbook
from openpyxl.utils.dataframe import dataframe_to_rows

# Name of the celebrity that I want to modify
celeb_name = 'Terence Stamp'

wb = load_workbook('Celebrities.xlsx')
ws = wb['Relationships']

df = pd.read_excel('Celebrities.xlsx', sheet_name='Relationships')

# This part is trivial, but basically I'm replacing every null cell in 'Link' column with the word 'empty' (of that particular celebrity)
df.loc[(df['Celebrity Name'] == celeb_name) & (df['Link'].isnull()), 'Link'] = 'empty'

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

wb.save('new.xlsx')

现在该脚本可以正常运行,并且new.xlsx已成功创建,但是当我尝试打开它时,它给了我这个错误:

  

警告正在加载文档new.xlsx:无法加载数据   完全是因为超出了每张纸的最大行数。

没有任何修改!

我可以保证代码的这一部分工作正常:

wb = load_workbook('Celebrities.xlsx')
ws = wb['Relationships']
wb.save('new.xlsx')

我想问题出在这部分代码:

for r in dataframe_to_rows(df, index=True, header=True):
    ws.append(r)

但是我不知道如何解决它。

1 个答案:

答案 0 :(得分:2)

您在问题中说没有任何修改。但是有。您的代码遍历数据框,并在每次遍历过程中向工作表添加新行。限制为1,048,576行,Excel告诉您修改后的工作表超出了该限制。