将新列写入现有 xlsx 文件

CEa*_*onn 2 python xlsx openpyxl

我有一个.xlsx基本格式为多张纸(sheet1、sheet2、sheet3)的文件

Col1 | Col2 | Col3 | Col4 | Col5
abc1 | abc2 | abc3 | abc4 | abc5
Run Code Online (Sandbox Code Playgroud)

列数不同的地方。我希望能够根据给定的工作表名称编写新的工作表。目前我有:

import openpyxl


def get_sheets():
    wb = openpyxl.load_workbook('C:/Users/mydir/Desktop/myfile.xlsx')
    sheets = wb.get_sheet_names()

sheet3 = "Sheet3"
sheet4 = "Sheet4"
for i in sheets:
    if i == sheet3:
        # Write column
    elif i == sheet4:
        # Write column in different sheet
    else:
        continue


def main():
    get_sheets()

    print
    print "Script finished."


if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

openpyxl 是否允许将新列写入现有的 xlsx 文件,其标题和行数等于标题后的行数?

Mar*_*ans 6

要将新列添加到现有 xlsx 文件,您可以编写一个add_column()函数,如下所示。这需要工作表名称和您要添加的值列表:

import openpyxl

def add_column(sheet_name, column):
    ws = wb[sheet_name]
    new_column = ws.max_column + 1
    
    for rowy, value in enumerate(column, start=1):
        ws.cell(row=rowy, column=new_column, value=value)


wb = openpyxl.load_workbook('C:/Users/mydir/Desktop/myfile.xlsx')
add_column('Sheet3', ['new header', 'value1', 'value2'])
wb.save('output.xlsx')   # use the same name if required
Run Code Online (Sandbox Code Playgroud)

您只需使用 即可按名称获取工作表wb['Sheet3']。然后,要获取工作表中现有列的数量,请使用ws.max_column获取最后一列索引。1为您新添加的列添加。

接下来使用 Python 的enumerate()函数来处理列值列表。对于每个,它都会为您提供要使用的行号和要写入单元格的值。