使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件

出门莫恨无人随,书中车马多如簇。这篇文章主要讲述使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件相关的知识,希望能为你提供帮助。


因为有统计成员到会情况的任务,每次汇总时都很麻烦,需要一个个对应腾讯会议导出名单的成员,然后在总表上进行标记,所以就写了本程序来减少统计的复杂度。
使用??xlrd???和??xlwt??包
【使用Python解决对比出两个Excel文件中的不同项并将结果重新写入一个新的Excel文件】 首先安装两个包
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 = https://www.songbingjia.com/android/sheet1.cell_value(i, 0)
sheet2_value = https://www.songbingjia.com/android/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 = https://www.songbingjia.com/android/sheet1.cell_value(i, 0)
sheet2_value = https://www.songbingjia.com/android/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

    推荐阅读