import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter
# 创建excel
xls = openpyxl.Workbook()
sheet = xls.active
xls.remove(xls.active)
# 跳过指定行
skip_line = 0
# 偏移
padding_x = 100
padding_y = 100
sheet1 = xls.create_sheet("表1")
sheet = xls.create_sheet("表2")
sheet2 = xls.create_sheet("merge")
matrix1 = []
title1 = None
with open('txt1.txt', 'r') as fp:
lines = fp.readlines()
tmp_y = padding_y
for idx, line in enumerate(lines):
if idx < skip_line:
continue
line = [x for x in line.strip()]
if title1 is None:
title1 = ['']
title1.extend([padding_x + x for x in range(len(line))])
sheet1.append(title1)
sheet2.append(title1)
line.insert(0, tmp_y)
tmp_y += 1
sheet1.append(line)
sheet2.append(line)
matrix1.append(line)
for i in range(1, sheet1.max_column + 1):
sheet1.column_dimensions[get_column_letter(i)].width = 2.5
for i in range(1, sheet.max_column + 1):
sheet.column_dimensions[get_column_letter(i)].width = 2.5
matrix2 = []
title2 = None
with open('txt2.txt', 'r') as fp:
lines = fp.readlines()
tmp_y = padding_y
for idx, line in enumerate(lines):
if idx < skip_line:
continue
line = [x for x in line.strip()]
if title2 is None:
title2 = ['']
title2.extend([padding_x + x for x in range(len(line))])
sheet.append(title2)
# print(line)
line.insert(0, tmp_y)
tmp_y += 1
sheet.append(line)
matrix2.append(line)
# 保存
# val = ['1', 'X']
idx = 0
red_data = []
sheet2.append([''])
sheet2.append(['X', 'Y'])
for i in range(1, sheet2.max_column + 1):
sheet2.column_dimensions[get_column_letter(i)].width = 2.5
for x in range(len(matrix1)):
for y in range(len(matrix1[x])):
# 跳过指定行前的
# print(matrix1[x])
# print(matrix2[x])
v1 = matrix1[x][y]
v2 = matrix2[x][y]
# print(v1, v2)
# if v1 not in val or v2 not in val:
# continue
if v1 != v2:
red_data.append([x, y])
fill = PatternFill("solid", fgColor="f73131")
sheet2.cell(x + 2, y + 1).fill = fill
sheet2.append([padding_x + x, padding_y + y - 1, v1, v2])
# 保存
xls.save('数据比对结果.xlsx')