问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-05-04 13:33

我来回答

1个回答

热心网友 时间:2023-10-22 20:47

读取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。

热心网友 时间:2023-10-22 20:47

读取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。

热心网友 时间:2023-10-22 20:47

读取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。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 python xlrd取excel某列的长度 使用Python xlrd put_cell,写入Excel,打印有数据,但是打开Excel没有东西,为什么? python 的xlrd 用法 gpu-z刚打开,空白,不知道怎么开始识别显卡,求好心人回答 关于显卡显存用鲁大师和gpuz检测不一致问题? 用的GPU-Z测试的显卡,是不是显卡驱动没装好,还是硬件坏了,求大神解答 为什么GPU-Z没法识别我显卡的品牌 gpu-z测不出显卡信息 支付宝账户怎么从邮箱变成手机号啊 王者荣耀高阶李元芳怎么玩 李元芳高阶攻略 除了暴击流,李元芳怎么出装最好? 玩李元芳时,黑切与无尽是必须要出的吗? 王者荣耀李元芳装备 去车站改签要取票吗? 改签票是一定要取纸质票才能进站吗?还是依旧可以刷身份证进出站? 改签票一定要取出来嘛 凯萨帝洗衣机洗衣液和柔顺剂中间槽是干什么的 做聊天软件时。用httpclient 还是socket,两者都在什么时候用 公共洗衣机柔顺剂的槽里面有东西 城镇居民养老保险怎么算 使用python的第三方库xlrd以及xlwt文件中open_workbook中传入的exc... python读取excel数据,出现AttributeError: 'str' object has no attribute 'nrows' Python put_cell 怎么不起作用啊 python xlrd 读取中文内容excel. 读出来一个cell内容是\u6a21\u5757\u540d\u79f0 怎么转中文print出来啊 为什么要用python中xlrd,xlwt操作excel EXL表WPS的,多出一条虚线 惠普打印机碳粉怎么装? qq被暂时冻结多久自动解封? 弱弱问一句,为什么用httpClient请求api就报500错误 一个手机如何同时登录两个? 华润银行开户必须要本人吗? 华润银行开户失败怎么回事 国有企能够拍卖没有双证的国有房产吗 北京三大国企拍卖公司是那? 如何在华润银行开股票账户 华润银行开卡要本人去吗 请问向国企拍卖回来的办公用房产税费怎么交? 为什么我的vivo y38a手机不能隐藏应用? 华润银行开户后垃圾电话骚扰不停,后悔莫及啊 在国企上,给了你一套两室两厅的房子,但是,每个月要交三百元钱,可以说是分的房?