Excel 以通用方式进行列比较,并用一些颜色突出显示差异
Excel Columns Comparison in Generic way and highlight the differences with some color
我正在尝试按照以下代码将 csv 文件转换为 excel,并且我有几列需要在 excel 中进行比较并执行条件格式
在下面的代码中,我对单元格进行了硬编码 "B2<>C2"、"C2:C1048576"。在不提供 B2、C2 的情况下,我能否使这些单元格名称以通用方式读取并比较 excel
中的完整数据
无论我在哪里有 _SRC 和 _TGT,都需要同时比较这些列。 link 下面有两个样本 excels
for csvfile in glob.glob(os.path.join('.', "file1.csv")):
workbook = Workbook(csvfile[:-4] + '.xlsx')
worksheet = workbook.add_worksheet()
with open(csvfile, 'rt', encoding='utf8') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
orange_format = workbook.add_format({'bg_color': '#FFEB9C',
'font_color': '#9C6500'})
worksheet.conditional_format('C2:C1048576', {'type':'formula',
'criteria':'=B2<>C2',
'format':orange_format})
workbook.close()
我有两种类型的 excels 数据如下
如果你问如何制作
worksheet.conditional_format('C2:C1048576', {'type':'formula',
'criteria':'=B2<>C2',
'format':orange_format})
可重用到其他列,然后尝试这样的事情:
def get_previous_column(column):
# if you're expecting to go above column `Z` then you'll need to improve this function
return chr(ord(column) - 1)
def make_conditional_format(worksheet, col_src, col_tgt):
column_range = f"{col_tgt}2:{col_tgt}1048576"
worksheet.conditional_format(
column_range,
{
'type':'formula',
'criteria':f'={col_src}2<>{col_tgt}2',
'format':orange_format
}
)
columns_to_format = ['C', 'E', 'K', 'M']
for col_tgt in columns_to_format:
col_src = get_previous_column(col_tgt)
make_conditional_format(worksheet, col_src, col_tgt)
我正在尝试按照以下代码将 csv 文件转换为 excel,并且我有几列需要在 excel 中进行比较并执行条件格式
在下面的代码中,我对单元格进行了硬编码 "B2<>C2"、"C2:C1048576"。在不提供 B2、C2 的情况下,我能否使这些单元格名称以通用方式读取并比较 excel
中的完整数据无论我在哪里有 _SRC 和 _TGT,都需要同时比较这些列。 link 下面有两个样本 excels
for csvfile in glob.glob(os.path.join('.', "file1.csv")):
workbook = Workbook(csvfile[:-4] + '.xlsx')
worksheet = workbook.add_worksheet()
with open(csvfile, 'rt', encoding='utf8') as f:
reader = csv.reader(f)
for r, row in enumerate(reader):
for c, col in enumerate(row):
worksheet.write(r, c, col)
orange_format = workbook.add_format({'bg_color': '#FFEB9C',
'font_color': '#9C6500'})
worksheet.conditional_format('C2:C1048576', {'type':'formula',
'criteria':'=B2<>C2',
'format':orange_format})
workbook.close()
我有两种类型的 excels 数据如下
如果你问如何制作
worksheet.conditional_format('C2:C1048576', {'type':'formula',
'criteria':'=B2<>C2',
'format':orange_format})
可重用到其他列,然后尝试这样的事情:
def get_previous_column(column):
# if you're expecting to go above column `Z` then you'll need to improve this function
return chr(ord(column) - 1)
def make_conditional_format(worksheet, col_src, col_tgt):
column_range = f"{col_tgt}2:{col_tgt}1048576"
worksheet.conditional_format(
column_range,
{
'type':'formula',
'criteria':f'={col_src}2<>{col_tgt}2',
'format':orange_format
}
)
columns_to_format = ['C', 'E', 'K', 'M']
for col_tgt in columns_to_format:
col_src = get_previous_column(col_tgt)
make_conditional_format(worksheet, col_src, col_tgt)