如何在Python中向Excel表格中添加信息而不删除其余内容?

14 浏览
0 Comments

如何在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添加到其中...

希望有人能帮助我,这是我第一个问题,请回复并提供帮助或对如何提出问题的批评。

0
0 Comments

如何在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表格中添加新信息,而不会删除已有的内容。这为在处理大量数据时提供了便利,同时保留了原有数据的完整性。

0