excel获取两列数据的差异数据

背景

      在日常工作中难免会遇到要处理excel数据的问题,比如 找出excel两列数据中 A列中存在B列中不存在的数据,B列中存在A列中不存在的数据。当数据量比较小的时候使用excel自带工具还比较方便,但是当数据量比较大时,处理就没有那么简单了,这时可以使用python操作,不需要搭建多复杂的环境,只需要引入python操作excel的两个库就行了。


pip install xlrd --user
pip install xlwt --user
import xlrd
import xlwt


def handle(list1, list2):
    a = list(set(list1).difference(list2))
    return a


class ExcelHandle:
    def __init__(self, file_path, sheet_index):
        # 拿到excel文件
        self.rd_book = xlrd.open_workbook(file_path)
        # 拿到excel中的某个sheet
        self.sheet = self.rd_book.sheet_by_index(sheet_index)
        # 读取行头
        self.rowHead = self.sheet.row_values(0)
        # 拿到全部的行
        self.totalRows = self.sheet.nrows

    def get_cols_list(self):
        # 定义一个数组,存储要处理的列数据
        col_data = []
        for j in range(self.totalRows - 1):
            # 遍历得到每一行的数据,得到的是一个数组
            col = self.sheet.row_values(j + 1)
            col_data.append(col[0])
        return col_data


if __name__ == '__main__':
    filePath = r'C:Users\fusheng-fate\Desktop\read_excel.xls'
    self1 = ExcelHandle(filePath, 0)
    sheet1_list = ExcelHandle.get_cols_list(self1)
    self2 = ExcelHandle(filePath, 1)
    sheet2_list = ExcelHandle.get_cols_list(self2)
    a_b = handle(sheet1_list, sheet2_list)
    b_a = handle(sheet2_list, sheet1_list)
    # 把拿到的写入到文件中
    work_book = xlwt.Workbook()
    # 新增sheet
    worksheet = work_book.add_sheet("差异")
    # 表头
    worksheet.write(0, 0, "1存在2不存在")
    worksheet.write(0, 1, "2存在1不存在")
    for i in range(len(a_b)):
        worksheet.write(i+1, 0, a_b[i])
    for i in range(len(b_a)):
        worksheet.write(i+1, 1, b_a[i])
    work_book.save(r'C:Users\fusheng-fate\Desktop\handle.xls')
结语

不太完美的是,使用xlwt这个库,在新增一个sheet,向这个sheet插入数据后会覆盖掉原有的sheet,所有把处理后的数据写入到了新的文件中,本意是想将处理后的数据放入到原有的excel中的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值