首页 > 解决方案 > 使用 Python 更改具有多个 ExcelSheet 的工作簿中特定列中的值?

问题描述

我有一个名为 CustomerSales 的工作簿,在两个工作表中都有两个名为 sheet1 和 sheet2 的 Excel 工作表,我需要在特定列值中写入/更改值,所以我使用了。

if (data.at[g, 'failedColumn'] == '' and data.at[g, 'reason'] == ''):
    data.at[g, 'status'] = 'Fail'
    data.at[g, 'failedColumn'] = 'BUKRS'
    data.at[g, 'reason'] = 'Customer Not Extended To Any Company code'
    data.to_excel(variable)//*variable-path to excel file 

这里的数据是 sheet1 的数据框,这里的代码工作得很好 resultexcel 文件已经更新了列值 在此处输入图像描述

但是,当我尝试使用 sheet2 数据框的上述代码时,现有 sheet1 数据被 sheet2 替换。有没有办法可以更改两个工作表的值。

标签: python-3.xexcelpandasopenpyxlxlsxwriter

解决方案


为了操作两张表中的数据,您应该使用 pandas 读取文件,创建 2 个单独的数据框(每张表一个),然后使用 xlsxwriter 将它们保存在同一个工作簿中。这是一个演示代码:

 import pandas as pd

## Read the 2 sheets as separate dataframes
df1 = pd.read_excel('name_of_your_file.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('name_of_your_file.xlsx', sheet_name='Sheet2')

# Do all of your data manipulation here

# Start using xlsxwriter
writer = pd.ExcelWriter('name_of_the_new_file.xlsx', engine='xlsxwriter')

# Save each df to separate sheet in the same file
df1.to_excel(writer, sheet_name='Sheet1', index=False)
df2.to_excel(writer, sheet_name='Sheet2', index=False)

# You can format your worksheets here

# Finally save the file
writer.save()

推荐阅读