我有一个我要转换的exelfile但是数字的默认类型是float。如何更改它,以便xlwings显式使用字符串而不是数字?
这是我读取字段值的方法:
xw.Range(sheet, fieldname ).value
问题是,如果我从中创建一个字符串,40
之类的数字会转换为40.0
。我用str(xw.Range(sheetFronius, fieldname ).value).rstrip('0').rstrip('.')
剥离它,但这不是很有用并导致错误,因为有时同一个字段可以同时包含数字和字符串。 (不是同时,从列表中选择值)
答案 0 :(得分:2)
对于xlwings,如果在读/写操作期间未设置任何选项,则单个单元格将作为“浮点数”读入。此外,默认情况下,带有数字的单元格将被读取为“浮动”。我搜索了文档,但不认为你可以通过xlwings将具有数字的单元格转换为“字符串”。幸运的是,一切都没有丢失......
您可以使用xlwings将单元格读入'int',然后在Python中将'int'转换为'string'。这样做的方法如下:
xw.Range(sheet, fieldname).options(numbers=int).value
最后,您可以通过这种方式读取数据(通过将字符串转换打包到选项中):
xw.Range(sheet, fieldname).options(numbers=lambda x: str(int(x))).value
然后你会以通常的方式将它转换为Python中的字符串。
祝你好运!