Python如何在Excel中添加列、插入列
2023-10-13 15:30
原创
本文讲解如何使用 Python 在 Excel 工作表中添加列(追加一列)和插入列(在指定位置插入一列),可以使用 openpyxl 库来实现这个需求。
首先安装 openpyxl 库:
pip install openpyxl
一、在表格最右侧追加一列
Python 程序:
from openpyxl import load_workbook
def append_column(file_path,sheet_name,data):
# 加载 Excel 文件
workbook = load_workbook(file_path)
# 选择工作表
sheet = workbook[sheet_name]
# 追加写入一列
index = sheet.max_column + 1
for i in range(len(data)):
sheet.cell(row=i+1,column=index,value=data[i])
# 保存工作簿
workbook.save(file_path)
# 设置文件名和工作表名,大小写敏感
file_path = '测试的文件.xlsx'
sheet_name = 'Sheet1'
# 新增列数据
data = ['表头','数据A','数据B','数据C','数据D']
append_column(file_path,sheet_name,data)
在这段程序中,定义了函数 append_column(),并将数据列表 data 作为参数传给它。在自定义函数 append_column() 中,sheet.max_column 用于获取 Excel 表格是最大列数,sheet.max_colum + 1 表示新列的数字序号,然后在 for 循环中调用 sheet.cell() 函数依次将数据列表写入新列。最后保存工作簿。
二、在指定位置插入一列
插入列其实也是添加列,只不过它有位置的要求,稍微特殊一点。
Python 程序:
from openpyxl import load_workbook
from openpyxl.utils import column_index_from_string
def insert_column(file_path,sheet_name,data,col_letter):
# 加载 Excel 文件
workbook = load_workbook(file_path)
# 选择工作表
sheet = workbook[sheet_name]
# 将字母序号转为数字序号
index = column_index_from_string(col_letter)
# 指定要插入的列位置
sheet.insert_cols(index)
# 插入列
for i in range(len(data)):
sheet[col_letter + str(i + 1)] = data[i]
# 或 sheet.cell(row=i+1,column=index,value=data[i])
# 保存工作簿
workbook.save(file_path)
# 设置文件名和工作表名,大小写敏感
file_path = '测试的文件.xlsx'
sheet_name = 'Sheet1'
# 要插入的列的字母序号
col_letter = 'C'
# 新增列数据
data = ['表头','数据A','数据B','数据C','数据D']
insert_column(file_path,sheet_name,data,col_letter)
在这段程序中,我们需要指定新列要插入的位置 col_letter,用字母序号表示,本例中将新列位置设置为“C”。
在自定义函数 insert_column() 中,使用 openpyxl 库的 column_index_from_string() 函数将字母序号转换为数字序号,然后使用 sheet.insert_cols() 函数指定要插入的列位置,其参数就是刚转换过来的数字序号,然后在 for 循环中依次将数据列表写入新列。col_letter + str(i + 1) 合成单元格坐标,形如“C5”。最后保存工作簿。