通过附加额外的零来更正Excel中的HEX值

  • 本文关键字:Excel 中的 HEX excel hex openpyxl
  • 更新时间 :
  • 英文 :


我确实找到了以前关于多行串联(https://stackoverflow.com/questions/60143273/openpyxl-concatenation-of-several-columns-into-one-cell-per-row-multi-row(的问题的解决方案,但我发现HEX代码在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'部分。我不知道问题出在哪里。你能解释一下为什么我走错了轨道吗?非常感谢。

您可以将.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

最新更新