0

我为修改现有工作表而编写的函数收到此错误,但类似的却没有:

DuplicateWorksheetName:Sheetname 'Example',忽略大小写,已在使用中。

有错误的函数:

def mod_quotes_sheet(workbook, read_worksheet, all_designs, quotes_list): 
    '''
    Overwrites the worksheet to reflect new design options and
    new and modified quotes. 
    '''
    new_ws = workbook.add_worksheet(read_worksheet.name)
    # Error occurs at this line.

    # 1. New designs 
    # 1.1 Writing the header: May change with new designs 
    new_designs = all_designs.keys()

    header = read_worksheet.row_values(0)
    new_header = header.copy()

    existing_designs = header[3:]
    for new in new_designs: 
        if new not in existing_designs: 
            new_header += new 

    for h in range(len(new_header)): 
        new_ws.write(0, h, new_header[h])

    # 2. Quotes 
    new_quotes = new_data(read_worksheet, quotes_list)

    for r in range(len(new_quotes)):

        # 1.2 If new designs not noted, 
        # existing quotes do not have new designs. 
        new_row = new_quotes[r]
        row_length = len(new_row)
        new_row_length = len(new_header)

        if row_length < new_row_length: 
            row_diff = new_row_length - row_length
            for d in range(row_diff): 
                new_row.append(0)
        
        for c in range(len(new_row)): 
            new_ws.write(r+1, c, new_row[c])
    return 

没有错误的功能:

def mod_start_sheet(workbook, read_worksheet, new_data):
    '''
    Writes new data (2D list) into an existing start sheet.
    '''
    new_ws = workbook.add_worksheet(read_worksheet.name) 

    # Writing the header: Remains the same
    header = read_worksheet.row_values(0)
    for h in range(len(header)): 
        new_ws.write(0, h, header[h])
    
    # Writing new data
    for r in range(len(new_data)):
        for c in range(len(new_data[r])): 
            new_ws.write(r+1, c, new_data[r][c])

    return 

如果这有任何帮助,这里是笔记本对象的初始化位置。mod_quotes_sheetrewrite_quote_sheet,并且mod_start_sheetexisting_start_sheet

def existing_workbook(path, sources, all_designs, quotes): 
    '''
    Modifies an existing workbook.
    '''

    wb = xlwt.Workbook(path)
    r_wb = xlrd.open_workbook(path)
    wb_sheets = r_wb.sheet_names()

    existing_start_sheet(wb, r_wb, "Names", sources)
    existing_start_sheet(wb, r_wb, "Designs", all_designs)

    # New quotes
    for source in quotes.keys(): 
        if source in wb_sheets: 
            quote_list = quotes[source]
            rewrite_quote_sheet(wb, r_wb, source, all_designs, quote_list)

        else: 
            quote_sheets(wb, all_designs, quotes)

    # Existing quotes
    start_sheet_names = ["Names", "Designs"]

    for source in wb_sheets: 
        if source not in start_sheet_names and source not in quotes.keys():
            quote_list = []
            rewrite_quote_sheet(wb, r_wb, source, all_designs, quote_list)

    wb.close()

    return 

我试图 new_ws = workbook.add_worksheet(read_worksheet.name)

wb_copy = copy(workbook)
new_ws = wb_copy.get_sheet(workbook.index(read_worksheet.name))

使用xlutils.copy,但会导致新错误:AttributeError: 'Workbook' object has no attribute 'datemode', at this line wb_copy = copy(workbook)

4

0 回答 0