使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件
Posted Laccoliths
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件相关的知识,希望对你有一定的参考价值。
因为有统计成员到会情况的任务,每次汇总时都很麻烦,需要一个个对应腾讯会议导出名单的成员,然后在总表上进行标记,所以就写了本程序来减少统计的复杂度。
使用xlrd
和xlwt
包
首先安装两个包
pip install xlrd == 1.2.0
pip install xlwt == 0.7.5
定义contrast
函数
def contrast(processed_export_excel_file,all_number_file,different_name_file):
"""
@param processed_export_excel_file:处理后的导出名单
@param all_number_file:总人数的名单
@param different_name_file:导出文件的地址
"""
# 打开Excel文件
# 打开处理后的导出名单
data1 = xlrd.open_workbook(processed_export_excel_file)
# 打开总人数的名单
data2 = xlrd.open_workbook(all_number_file)
# 获取第一个sheet
sheet1 = data1.sheet_by_index(0)
sheet2 = data2.sheet_by_index(0)
# 获取两个Excel文件的行数和列数
grows1 = sheet1.nrows
grows2 = sheet2.nrows
# 创建一个新的Excel文件
new_excel = xlwt.Workbook()
new_sheet = new_excel.add_sheet(未参会人员)
# 相同项
same_content = []
# sheet2中的所有人员
excel_2_content = []
# 未参会人员
diff_content = []
for i in range(grows2):
excel_2_content.append(sheet2.cell_value(i, 0))
for i in range(grows1):
for j in range(grows2):
sheet1_value = sheet1.cell_value(i, 0)
sheet2_value = sheet2.cell_value(j, 0)
# sheet1的字符串包含sheet2的字符串
if str(sheet2_value) in str(sheet1_value):
same_content.append(sheet2_value)
# 找出excel_2_content中不在same_content中的内容
for i in excel_2_content:
if i not in same_content:
diff_content.append(i)
print("原有内容:", excel_2_content)
print("相同项:" + str(same_content))
print("不同项:" + str(diff_content))
print("总共有" + str(len(diff_content)) + "个不同项")
# 将不同项写入新的Excel文件
for i in range(len(diff_content)):
new_sheet.write(i, 0, diff_content[i])
new_excel.save(different_name_file)
测试contrast
函数
if __name__ == __main__:
file1 = r"C:/Users/MSI/Desktop/test1.xlsx"
file2 = r"C:/Users/MSI/Desktop/test2.xlsx"
outfile = r"C:/Users/MSI/Desktop/diff.xlsx"
contrast(file1, file2, outfile)
完整代码:
import xlrd
import xlwt
"""
pip3 install xlrd == 1.2.0
pip3 install xlwt == 0.7.5
"""
def contrast(processed_export_excel_file, all_number_file, different_name_file):
"""
@param processed_export_excel_file: 导出名单处理后
@param all_number_file: 总人数的名单
@param different_name_file: 导出文件名
"""
# 打开Excel文件
# 打开处理后的导出名单
data1 = xlrd.open_workbook(processed_export_excel_file)
# 打开总人数的名单
data2 = xlrd.open_workbook(all_number_file)
# 获取第一个sheet
sheet1 = data1.sheet_by_index(0)
sheet2 = data2.sheet_by_index(0)
# 获取两个Excel文件的行数和列数
grows1 = sheet1.nrows
grows2 = sheet2.nrows
# 创建一个新的Excel文件
new_excel = xlwt.Workbook()
new_sheet = new_excel.add_sheet(未参会人员)
# 相同项
same_content = []
# sheet2中的所有人员
excel_2_content = []
# 未参会人员
diff_content = []
for i in range(grows2):
excel_2_content.append(sheet2.cell_value(i, 0))
for i in range(grows1):
for j in range(grows2):
sheet1_value = sheet1.cell_value(i, 0)
sheet2_value = sheet2.cell_value(j, 0)
# sheet1的字符串包含sheet2的字符串
if str(sheet2_value) in str(sheet1_value):
same_content.append(sheet2_value)
# 找出excel_2_content中不在same_content中的内容
for i in excel_2_content:
if i not in same_content:
diff_content.append(i)
print("原有内容:", excel_2_content)
print("相同项:" + str(same_content))
print("不同项:" + str(diff_content))
print("总共有" + str(len(diff_content)) + "个不同项")
# 将不同项写入新的Excel文件
for i 以上是关于使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件的主要内容,如果未能解决你的问题,请参考以下文章怎样用Beyond Compare比较两个excel表格文件差异
用vba,删除excel文件里某列数据中的[,]和[¥]两个特殊字符
使用python返回excel中两个不同文件中两列之间的差异