通过附加零更正Excel中的十六进制值

通过附加零更正Excel中的十六进制值,excel,hex,openpyxl,Excel,Hex,Openpyxl,我确实找到了一个解决之前关于多行连接的问题的方法https://stackoverflow.com/questions/60143273/openpyxl-concatenation-of-several-columns-into-one-cell-per-row-multi-row,但我发现十六进制代码在Excel中显示不正确。我发现有两种情况,我需要在格式化列/工作表后更正.csv/.txt的导入。在连接列/工作表之前,F列到M列中有一个数字的值不起作用。 Excel将00以及02或任何其他

我确实找到了一个解决之前关于多行连接的问题的方法https://stackoverflow.com/questions/60143273/openpyxl-concatenation-of-several-columns-into-one-cell-per-row-multi-row,但我发现十六进制代码在Excel中显示不正确。我发现有两种情况,我需要在格式化列/工作表后更正.csv/.txt的导入。在连接列/工作表之前,F列到M列中有一个数字的值不起作用。 Excel将00以及02或任何其他数字更改为0,而不是将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'部分。我不知道是什么问题。你能解释一下为什么我走错了方向吗?谢谢大家!

您可以将.zfillx添加到字符串值中,使其长度至少为x。由于需要2个字符,因此将使用.zfill2

def concat__________m: 对于范围1中的行值,sheet.max\u行+1: 值=[] del值[:] 对于表中的行。iter\u rowsmin\u col=6,max\u col=14,min\u row=row\u值,max\u row=row\u值: 对于行中的单元格: 如果cell.value!=无: values.appendstrcell.value.zfill2 工作表[f'E{row_value}'].value=.joinvalues 其他: del值[:] 打破
您需要将单元格格式化为excel文本,以停止删除前导零,例如,从csv导入时,您必须按每列执行此操作。如果cell.value==“0”因为值为0 Int而不是“0”string而无法计算,如果我在Excel中执行此操作,我将使用Power Query将csv作为文本导入,然后加入列,然后将其写入工作表。您不能对openpyxl执行类似的操作吗?如果strcell.value==“0”:,这将为您提供一个整数值的字符串表示形式,然后您可以修改它以附加前导零,或者按现有操作并将其替换为字符串00。