Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向excel工作表中添加信息而不删除Python中的其余信息?_Python_Excel - Fatal编程技术网

如何向excel工作表中添加信息而不删除Python中的其余信息?

如何向excel工作表中添加信息而不删除Python中的其余信息?,python,excel,Python,Excel,问题 我需要制作一个python脚本,可以将信息导出到excel工作表,而无需删除工作表旧信息或工作表。参见伪代码 上下文: 此功能与刮纸器配合使用。希望能够将数据扩展到现有工作表、创建新工作表和创建新文件 在其他问题的帮助下,我非常接近: 但我想在现有的图纸上扩展 伪代码 def OutputDataToExcel(Filename,Sheetname,df): #df is a pandas dataframe If Filename and Sheetname exists:

问题

我需要制作一个python脚本,可以将信息导出到excel工作表,而无需删除工作表旧信息或工作表。参见伪代码

上下文:

此功能与刮纸器配合使用。希望能够将数据扩展到现有工作表、创建新工作表和创建新文件

在其他问题的帮助下,我非常接近: 但我想在现有的图纸上扩展

伪代码

def OutputDataToExcel(Filename,Sheetname,df): #df is a pandas dataframe
    If Filename and Sheetname exists:
        extend the Sheetname with df (no header)
    elif Filename exists:
        create new sheet with Sheetname
        add df (with header)
    else:
    create new excelfile with Filename
    create new sheet with Sheetname
    add df (with header)
到目前为止我的代码

有些人被批评为关注这个问题

结果

将创建名为Sheetname1的新图纸,并将df添加到此图纸,而不是将其添加到Sheetname。 如果我再次运行它,一个名为Sheetname2和df的新工作表就会添加到这里

我希望有人能帮助我,这是我的第一个问题,因此,请就如何提出这个问题给予帮助或批评。

我终于明白了!! 如果任何人有任何兴趣,以下是代码:

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

参考这个问题,我试着在那里寻找答案。它启发了我很多代码。但我不能让它与一张以上的工作表。当我使用中的方法时,旧图纸将被删除
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