python xlrd 读取的单元格的值,怎么能确保是文本TEXT类型的,现在某些单元格读出来是NUMBER,有些是BOOL

Excel文件本身所有单元格已经全部修改为文本格式,但是貌似xlrd是按照单元格里面的值来判定的,如果值是TRUE或FALSE,则判定单元格为BOOL类型的,有什么办法吗... Excel文件本身所有单元格已经全部修改为文本格式,但是貌似xlrd是按照单元格里面的值来判定的,如果值是TRUE或FALSE,则判定单元格为BOOL类型的,有什么办法吗
比如说我现在本来是想读取TRUE这个字符串,但是现在cell_value(10,10)返回的值是1
展开
 我来答
百度网友29d79c26e1
2014-06-18 · TA获得超过665个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:96.6万
展开全部

读取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。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式