繁体   English   中英

我可以从Excel文件修改特定工作表并回写到同一工作表而不使用Pandas |修改其他工作表 openpyxl

[英]Can I modify specific sheet from Excel file and write back to the same without modifying other sheets using Pandas | openpyxl

我将尝试用一个例子来解释我的问题:

假设我有一个Excel文件test.xlsx ,它具有五个选项卡(即工作表):Sheet1,Sheet2,Sheet3,Sheet4和sheet5。 我有兴趣阅读和修改sheet2中的数据。

我的sheet2有一些列,其单元格是下拉列表,这些下拉列表值在sheet4和sheet5中定义。 我不想触摸sheet4和sheet5。 (我的意思是sheet4和sheet5对Sheet2上的单元格有一些引用)。

我知道我可以使用pd.read_excel('test.xlsx', sheetnames=None)读取excel文件中的所有工作表,这基本上将所有工作表作为DataFrames的字典(OrderedDict)提供。

现在,我想修改我的sheet2并保存它而不打扰其他人。 因此,使用Python Pandas库可以做到这一点

[更新-4/1/2019]

我正在使用Pandas read_excel从我的excel文件中读取我需要的任何工作表,使用数据库中的数据验证数据并更新excelfile中的status列。

因此,为了写出excel中的status列,我使用的是openpyxl,如下面的伪代码所示。

import pandas as pd
import openpyxl

df = pd.read_excel(input_file, sheetname=my_sheet_name)
df = df.where((pd.notnull(df)), None)

write_data = {}

# Doing some validations with the data and building my write_data with key 
# as (row_number, column_number) and value as actual value to put in that 
# cell.

at the end my write_data looks something like this: 
{(2,1): 'Hi', (2,2): 'Hello'}

现在,我定义了一个单独的名为WriteData的类,用于使用openpyxl写入数据

# WriteData(input_file, sheet_name, write_data)

book = openpyxl.load_workbook(input_file, data_only=True, keep_vba=True)
sheet = book.get_sheet_by_name(sheet_name)

for k, v in write_data.items():
   row_num, col_num = k
   sheet.cell(row=row_num, column=col_num).value = v

book.save(input_file)

现在,当我执行此操作时,它将删除所有公式和图表。 我正在使用openpyxl 2.6.2

如果我做错任何事情,请纠正我! 有什么更好的办法吗?

任何有关这方面的帮助将不胜感激:)

要一次修改单个工作表,可以使用pandas excel writer:

sheet2 = pd.read_excel("test.xlsx", sheet = "sheet2")

##modify sheet2 as needed.. then to save it back:

with pd.ExcelWriter("test.xlsx") as writer:
        sheet2.to_excel(writer, sheet_name="sheet2")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM