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中的。

你可能感兴趣的:(python,python,excle列数据差异)