python xlrd 读取的单元格的值,怎么能确保是文本TEXT类型的,现在某些单元格读出来是NUMBER,有些是BOOL
Excel文件本身所有单元格已经全部修改为文本格式,但是貌似xlrd是按照单元格里面的值来判定的,如果值是TRUE或FALSE,则判定单元格为BOOL类型的,有什么办法吗...
Excel文件本身所有单元格已经全部修改为文本格式,但是貌似xlrd是按照单元格里面的值来判定的,如果值是TRUE或FALSE,则判定单元格为BOOL类型的,有什么办法吗
比如说我现在本来是想读取TRUE这个字符串,但是现在cell_value(10,10)返回的值是1 展开
比如说我现在本来是想读取TRUE这个字符串,但是现在cell_value(10,10)返回的值是1 展开
展开全部
读取TRUE时返回的是1,是因为TRUE这个值在excel文件中保存时就是真值类型0或1,而不是保存文本TRUE(节省存储空间)。数字也是这样的。
如果你想把读取时都变为文字,有两种方法。
1,在原excel文件中修改。将TRUE真值类型、数字类型转换成文本类型。
2,在xlrd读取过程中加入一些简单的判定,不同数据不同处理。
def read_cell(x,y):
if cell_type(x,y)==4: #4是真值类型(bool)
return "TRUE" if cell_value(x,y)==1 else "FALSE"
elif cell_type(x,y)==2: #2是数字类型(number)
return str(cell_value(x,y))
else:#其他类型不再一一列举,用到时再做增加
return cell_value(x,y)
追问
第一种方法我试了,全局选中修改为文本类型,可是读出来还是不正确,不知道不同版本的Excel会不会不一样。
实际按第二种方式操作了,但是还没试是否true也会读成1,否则不能按照显示的值完全还原啊。
谢谢
追答
Excel里面,真值是不区分大小写的。直接输入true,会自动转换成大写。你的不是这样吗?我测试的结果是,当全部转化为文本后,TrUE这样的也会原样显示。数据类型并不是根据内容确定的,而是根据单元格的格式设置确定的。BTW,我用的是Excel2010。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询