通过附加附加零在Excel中校正HEX值

问题描述 投票:0回答:1

我确实找到了针对多行串联(https://stackoverflow.com/questions/60143273/openpyxl-concatenation-of-several-columns-into-one-cell-per-row-multi-row)的上述问题的解决方案,但是我发现十六进制代码在Excel中无法正确显示。我发现有两种情况,在连接它们之前,我需要更正(格式化列/工作表后导入.csv / .txt无效)在F到M列中只有一位数字的值。Excel将"00"更改为"0",并将"02"(或其他任何数字而不是2)更改为"2"。这对我来说很重要,因为这些位将丢失,所有数据都将无用。

所需的输入:

A  B  C D  E            F            G   H  .. M
.. 2E .... 0000000000000AA4.. 
...4A ...  0002478304.. 

当前输入:

A  B  C D  E            F            G   H  .. M
.. 2E .... 0000000AA4.. 
...4A ...  0247834.. 

组织:

A  B  C D  E            F            G   H  .. M
.. 2E .... 00 00 00 00 00 00 0A A4.. 
...4A ...  00  02 47 83 04.. 

我到目前为止使用的代码:

def concat_f_to_m():
    for row_value in range(1, sheet.max_row+1):
        values=[]
        del values[:]
        for row in sheet.iter_rows(min_col=6, max_col=14, min_row=row_value, max_row=row_value):
            for cell in row:
                if cell.value != None:
                    if cell.value == '0':
                        values.append("00")
                        print("zeros", values)
                    else:   
                        values.append(str(cell.value))
                        print("non-zeros", values)
                    sheet[f'E{row_value}'].value= ''.join(values)
                else:
                    del values[:] 
                    break

在解决数字问题之前,我只处理一个零而不是两个零的问题。不知何故该程序甚至没有进入if cell.value == '0'部分。我不知道问题是什么。你能告诉我为什么我走错了路吗?谢谢!

excel hex openpyxl
1个回答
1
投票

您可以在字符串值中添加.zfill(x),因此长度为至少 x。由于您需要2个字符,因此您将.zfill(2)

def concat_f_to_m():
    for row_value in range(1, sheet.max_row+1):
        values=[]
        del values[:]
        for row in sheet.iter_rows(min_col=6, max_col=14, min_row=row_value, max_row=row_value):
            for cell in row:
                if cell.value != None:
                    values.append(str(cell.value).zfill(2))
                    sheet[f'E{row_value}'].value= ''.join(values)
                else:
                    del values[:] 
                    break
© www.soinside.com 2019 - 2024. All rights reserved.