通过附加零更正Excel中的十六进制值
我确实找到了一个解决之前关于多行连接的问题的方法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。这对我来说很重要,因为比特将丢失,所有数据都将无用 所需输入:通过附加零更正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或任何其他
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。