如何使用 Python 在 Excel 中的某些行之后追加一行

Ric*_*ang 4 python excel openpyxl

我是Python新手。这几天刚玩openpyxl。我想使用 Python 编写一个电子表格,但是单元格的格式和样式很复杂,并且不一定每次都正确。

所以我正在考虑制作一个模板 Excel 文件,并始终从该文件中读取并将其另存为新文件。为此,我必须避免覆盖某些行。目前,我使用代码在 Excel 中附加行,因为我不附加大小。

有什么方法可以附加特定行(例如第七行)中的行吗?

我的代码是:

def Output(message):

    wb = Workbook()
    ws = wb.active
    ws.title = 'Quotation'
    Row_size = len(message)
    for i in range (Row_size):
        message_line = message[i]

        ws.append(message_line)

    wb.save('Quatation.xlsx')
Run Code Online (Sandbox Code Playgroud)

Mar*_*ans 5

不使用ws.append(),而是使用ws.cell()函数来指定所需的行和列。enumerate()可用于为您提供7传递列表中每个条目的行号。

from openpyxl import Workbook

def Output(message):
    wb = Workbook()
    ws = wb.active
    ws.title = 'Quotation'
    
    for row, text in enumerate(message, start=7):
        ws.cell(column=1, row=row, value=text)

    wb.save('Quotation.xlsx')

Output(['hello', 'world'])
Run Code Online (Sandbox Code Playgroud)

给你:

excel截图


请注意,如果每行传递多个单元格,则需要第二个循环。如果您想追加到现有文件,您还可以使用ws.max_row给出最后一个现有行的位置:

from openpyxl import Workbook

def Output(message):
    wb = Workbook()
    ws = wb.active
    ws.title = 'Quotation'
    
    for row, text in enumerate(message, start=7):
        ws.cell(column=1, row=row, value=text)

    wb.save('Quotation.xlsx')

Output(['hello', 'world'])
Run Code Online (Sandbox Code Playgroud)

在这种情况下,ws.append()也可以使用,但ws.cell()如果需要,使用它可以让您更好地控制单元格的格式。例如

import openpyxl

xlsx = 'Quotation.xlsx'
wb = openpyxl.load_workbook(xlsx)
ws = wb.active

data = [['a', '1'], ['b', '2']]     # new rows to append to existing xlsx

for rowy, row in enumerate(data, start=ws.max_row):
    for colx, value in enumerate(row, start=1):
        ws.cell(column=colx, row=rowy, value=value)

wb.save(xlsx)
Run Code Online (Sandbox Code Playgroud)