Python使用openpyxl按工号条件合并Excel数据详解
本文介绍如何使用Python的openpyxl库,根据唯一的工号字段,将两个Excel文件中的数据自动匹配并补充到目标表中。文章对比了xlwt与openpyxl的区别,详细讲解了单元格读写方法,并提供了完整的代码示例,实现基于工号的数据关联与内容更新。
Excel处理库的选择:xlwt与openpyxl对比
在Python处理Excel文件时,常用的库包括xlrd、xlwt和openpyxl。了解它们之间的差异有助于选择合适的工具。
这些库都用于操作Excel文件,但核心区别在于写入功能的支持范围。
xlwt主要针对Excel 2007及更早版本(.xls格式),其限制是每个工作表最多包含65535行。相比之下,openpyxl专为Excel 2007之后的版本(.xlsx格式)设计,对文件大小没有行数限制。
此外,两者在读写速度上也有差异。xlrd和xlwt的读写性能通常优于openpyxl,但xlwt无法生成.xlsx格式文件。
openpyxl基础用法与单元格操作
接下来重点介绍openpyxl的具体用法。
更多详细信息可参考官方文档。
首先需要了解Worksheet.cell()方法,这是访问和操作单元格的关键接口。
该方法支持通过行号和列号来定位单元格,例如:
d = ws.cell(row=4, column=2, value=10)
要获取特定单元格的数据,可以使用cell_value属性或cell方法。
#通过坐标读取表格中的数据
cell_value1=sheet0.cell_value(y,x)
写入数据时,可以直接赋值给单元格坐标,或使用append方法添加整行数据。
import openpyxl
import datetime
wb = openpyxl.Workbook()
ws = wb.active
ws['A1'] = 520
ws.append([1,2,3])
ws['A3'] = datetime.datetime.now()
wb.save("F:/demo.xlsx")
更新现有数据时,只需重新赋值即可,无需删除原内容。
import openpyxl
'''
操作Excel
实战:按工号条件合并Excel数据
具体需求场景:需要将“数据2”中的信息补充到“数据1”中,关联依据是两者都包含唯一的工号字段。
'''
def excel():
wb1 = openpyxl.load_workbook('数据1.xlsx') #路径
sheet1 = wb1.active
wb2 = openpyxl.load_workbook('数据2.xlsx')
sheet2 = wb2.active
for i in range(2, 1211): #数据1.xlsx的数据量
id2 = sheet2.cell(i, 2).value #获取数据1唯一工号
for j in range(2, 1225): #数据2.xlsx的数据量
id1 = sheet1.cell(j, 2).value #获取数据2唯一工号
if(id1 == id2):
sheet1.cell(j, 5).value = sheet2.cell(i, 5).value #赋值
sheet1.cell(j, 8).value = sheet2.cell(i, 1).value
sheet1.cell(j, 7).value = sheet2.cell(i, 6).value
wb1.save('xg3.xlsx') #存入到一张新的excel表中
if __name__ == "__main__":
excel()
通过遍历两个工作簿,匹配工号并将对应字段值复制到目标单元格,最后保存为新文件。
以上介绍了利用Python对Excel按条件进行内容补充的方法。希望本文能帮助大家解决实际问题,如有任何疑问,欢迎留言交流。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









