如何在Python中向Excel表格中添加信息而不删除其余内容?
如何在Python中向Excel表格中添加信息而不删除其余内容?
问题
我需要编写一个Python脚本,可以将信息导出到Excel表格中,而不会删除表格中旧的信息或表格。请参考伪代码。
背景:
此功能将与网络爬虫一起使用。希望能够扩展现有表格的数据,创建新表格和新文件。通过其他问题的帮助,我已经接近目标。
如何使用Pandas将新的工作表保存到现有的Excel文件中?
但是我希望能够在现有的工作表上进行扩展。
伪代码:
def OutputDataToExcel(Filename,Sheetname,df): #df是一个Pandas数据框 如果Filename和Sheetname存在: 扩展Sheetname,使用df(无表头) 否则如果Filename存在: 创建具有Sheetname的新工作表 添加df(有表头) 否则: 创建具有Filename的新Excel文件 创建具有Sheetname的新工作表 添加df(有表头)
我的代码至今为止
一些代码被注释掉以便专注于问题
import openpyxl import pandas as pd def outputdata(Filename,Sheetname,df): #try: #会在找不到文件或工作表时引发错误 #并将信息扩展到工作表上 xl1 = pd.read_excel(Filename,Sheetname) xl2 = pd.ExcelFile(Filename) wb=openpyxl.load_workbook(Filename) length = len(xl2.parse(Sheetname)) writer = pd.ExcelWriter(Filename,sheet_name = Sheetname , engine = "openpyxl") df.to_excel(writer,Sheetname, startrow=length+1, index=False, header = None) writer.book = wb writer.save() #writer.close() #except: #try: #会在找不到文件时引发错误 #并创建一个新的工作表 #wb=openpyxl.load_workbook(Filename) #wb.openpyxl.create_sheet(Sheetname) #df.to_excel(writer,Sheetname, index=False) #writer.save() #writer.close() #except: #writer = pd.ExcelWriter(Filename,sheet_name = Sheetname , engine = "openpyxl") #df.to_excel(writer,Sheetname, index= False) #writer.save() #writer.close()
结果
创建了一个名为Sheetname1的新工作表,并将df添加到该工作表中,而不是添加到Sheetname中。如果再次运行,将创建一个名为Sheetname2的新工作表,并将df添加到其中...
希望有人能帮助我,这是我第一个问题,请回复并提供帮助或对如何提出问题的批评。
如何在Python中向Excel表格中添加信息而不删除其他内容?
最近,有人在寻找一种在Python中向Excel表格中添加新信息的方法,而不会删除已有的内容。下面是他们提供的代码示例:
import xlsxwriter import pandas as pd def outputdata(Filename,Sheetname,df): try: xlsx_file = pd.ExcelFile(Filename) except: xlsxwriter.Workbook(Filename) xlsx_file = pd.ExcelFile(Filename) writer = pd.ExcelWriter(Filename, engine='openpyxl') IsSheetThereAlready = False for sheet in xlsx_file.sheet_names: if sheet == Sheetname: df2 = xlsx_file.parse(sheet) df2.to_excel(writer,sheet_name= sheet, index=False) df.to_excel(writer,sheet_name= sheet, startrow=len(df2)+1, index=False, header=None) IsSheetThereAlready = True else: df2 = xlsx_file.parse(sheet) df2.to_excel(writer,sheet_name= sheet, index=False) if IsSheetThereAlready is False: df.to_excel(writer,sheet_name = Sheetname, index=False) writer.save() return
这段代码使用了`xlsxwriter`和`pandas`库来实现向Excel表格中添加信息的功能。它定义了一个名为`outputdata`的函数,该函数接受三个参数:`Filename`表示Excel文件的名称,`Sheetname`表示要添加信息的工作表名称,`df`表示要添加的信息。
代码首先尝试打开Excel文件,如果文件不存在,则创建一个新文件。然后,它使用`pandas`库中的`ExcelFile`函数打开Excel文件,并将其保存在`xlsx_file`变量中。
接下来,代码创建一个`ExcelWriter`对象,并将其与`openpyxl`引擎关联。这将允许我们使用`pandas`库将数据写入Excel文件。
然后,代码通过遍历`xlsx_file.sheet_names`来检查Excel文件中是否已存在要添加信息的工作表。如果工作表已存在,则使用`parse`函数将现有数据读取到`df2`变量中。然后,使用`to_excel`函数将`df2`中的数据写入Excel文件中,并指定起始行为`len(df2)+1`,以确保新添加的信息不会覆盖已有的内容。最后,将`IsSheetThereAlready`变量设置为`True`。
如果工作表不存在,则直接将`df`中的数据写入Excel文件中的新工作表中。
最后,代码使用`save`函数保存并关闭Excel文件,并返回。
通过以上代码,我们可以在Python中向Excel表格中添加新信息,而不会删除已有的内容。这为在处理大量数据时提供了便利,同时保留了原有数据的完整性。