为什么我要在 Excel 工作簿的每个单元格中单独写入每个字符

问题描述 投票:0回答:1

我有一个代码可以自动读取所有工作表中特定 Excel 单元格中的信息。接下来,我希望将此数据填充到单独的 Excel 表中的一列中。 数据已写入,但先前读取的表中的数据的每个字符都填充在单独的单元格中。

这是负责此操作的一段代码。

def xlsx2():
    wb = Workbook()
    ws = wb.active

    ws['A1'] = 'Монтажник(и)'
    ws['B1'] = 'Номер шкафа'
    ws['C1'] = 'Сумма'

    data = [
        list(f'{a1}, {b1}, {c1}')
    ]
    print(type(data))

    for row in data:
        ws.append(row)


    wb.save('example.xlsx')

def lists():

    filetypes = (
        ('Excel', '*.xlsx'),
        ('All files', '*.*'),
    )
    global filename6
    filename6 = tk.filedialog.askopenfilename(
        title='Выбери таблицу',
        filetypes=filetypes,
    )

    wb = openpyxl.load_workbook(f'{filename6}', read_only=True, data_only = True)
    for sheet in wb:
        a1=sheet['A14'].value
        b1=sheet['B1'].value
        c1=sheet['D14'].value
        xlsx2()

结果就是照片中的

example.xlsx

enter image description here

python excel openpyxl
1个回答
0
投票

为了让您的代码正常工作,您需要将变量传递给 xlsx2 并将它们添加到列表中。

...
def xlsx2(a1, b1, c1):  # Variables from lists()
    wb = Workbook()
    ws = wb.active

    ws['A1'] = 'Монтажник(и)'
    ws['B1'] = 'Номер шкафа'
    ws['C1'] = 'Сумма'

    # data = [
    #     #list(f'{a1}, {b1}, {c1}')
    # ]

    data = [a1, b1, c1]  # Add to a list for appending
    print(type(data))

    # for row in data:
    ws.append(data)

    wb.save('example.xlsx')


def lists():
    filetypes = (
        ('Excel', '*.xlsx'),
        ('All files', '*.*'),
    )
    global filename6
    filename6 = tk.filedialog.askopenfilename(
        title='Выбери таблицу',
        filetypes=filetypes,
    )

    wb = openpyxl.load_workbook(f'{filename6}', read_only=True, data_only=True)
    for sheet in wb:
        a1 = sheet['A14'].value
        b1 = sheet['B1'].value
        c1 = sheet['D14'].value
        xlsx2(a1, b1, c1)


lists()
© www.soinside.com 2019 - 2024. All rights reserved.