博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一节:python读取excel文件
阅读量:6943 次
发布时间:2019-06-27

本文共 2375 字,大约阅读时间需要 7 分钟。

  写在前面:

       (1)Excel中数字格式int(1),读出的是float(1.0)类型,导致传参时造成不同,强制转换时,int(str(1.0))在2.7版本又会报错ValueError: invalid literal for int() with base 10: '1.0'经查阅资料后,发现数字类型在Excel中设置格式为

“文本”时会避免此问题发生;

       (2)Excel中包含中文时,读出的是str类型,断言时,self.assertEqual(self.info['msg'], int(self.msg)),self.info['msg']为<type 'unicode'>,这就会导致断言失败。self.assertEqual(self.info['msg'], self.msg.decode("utf-8"))能够解决此问题;

       本文中,读取Excel文件用的是xlrd库,检查库是否已安装(import xlrd),未报错则说明已安装成功,然后就可以开始练习啦!

       在度娘里了解了xlrd库的用法后,先尝试着写了下面这些简单代码:

# -*- coding:utf-8 -*-import xlrddef read_excel(xls_name,sheet_name):    worksheet = xlrd.open_workbook(xls_name)    sheet = worksheet.sheet_by_name(sheet_name)    for row in range(sheet.nrows):        for col in range(sheet.ncols):            #打印单元格内容            print sheet.cell(row,col)if __name__ == "__main__":    read_excel(r"F:\AONE\parameter.xlsx","第一周")

      运行后,果然不负所望,运行报错,学习的路程是艰难的,顺风顺水是不存在的。错误如下:

      xlrd.biffh.XLRDError: No sheet named <'\xe7\xac\xac\xe4\xb8\x80\xe5\x91\xa8'>

      查看报错位置,带有中文字符“第一周”,然后这个sheet没有找到!OK,根据以往经验,又是编码问题了,乖乖的设置默认编码后,运行后,成功!!,完整代码如下:

# -*- coding:utf-8 -*-import xlrdimport sysreload(sys)sys.setdefaultencoding("utf-8")def read_excel(xls_name,sheet_name):    worksheet = xlrd.open_workbook(xls_name)    sheet = worksheet.sheet_by_name(sheet_name)    for row in range(sheet.nrows):        for col in range(sheet.ncols):            print sheet.cell(row,col)if __name__ == "__main__":    read_excel(r"F:\AONE\parameter.xlsx","第一周")

      上面代码运行后,的确是没有报错,但是呢,结果Excel文件里中文不显示,时间显示怪异,直接上图:

      得!继续排雷!先解决时间显示异常的问题吧!然后呢!又问度娘!前辈是伟大的,果然有前辈留的武功秘籍,判断表格中的ctype,将包含时间的表格内容转换为tuple。按照思路,对我的时间格式进行了下整理。幸运的是,在解决时间异常的问题时,也解决了中文显示异常的问题!果然上帝还是眷顾爱学习的人啊!

      完整代码:

# -*- coding:utf-8 -*-import xlrdimport sysreload(sys)sys.setdefaultencoding("utf-8")def read_excel(xls_name,sheet_name):    worksheet = xlrd.open_workbook(xls_name)    sheet = worksheet.sheet_by_name(sheet_name)    for row in range(sheet.nrows):        for col in range(sheet.ncols):            #获取单元格内容            value = sheet.cell(row,col).value            #如果表格中ctype为3,则将其转换为tuple            if sheet.cell(row,col).ctype == 3:                date = xlrd.xldate_as_tuple(sheet.cell(row,col).value,0)                value = str(date[3])+":"+str(date[4])            print valueif __name__ == "__main__":    read_excel(r"F:\AONE\parameter.xlsx","第一周")

       运行结果如下图:

        至此,使用xlrd读取Excel文件并输出已完成!

 

转载于:https://www.cnblogs.com/python-kp/p/9953355.html

你可能感兴趣的文章
as3翻牌动画
查看>>
VirtualTreeview 参考
查看>>
lsof,ulimit,
查看>>
Windows几种线程同步方法介绍
查看>>
有效提高命中率的缓存设计
查看>>
Xamarin 获融资1200万美元
查看>>
Zookeeper C API 指南三(回调函数)
查看>>
[置顶] Oracle数据操作和控制语言详解
查看>>
聚类分析初探(一)引言
查看>>
C#通过webbrowser控件与javascript交互
查看>>
Linux磁盘空间监控告警
查看>>
目标检测的图像特征提取之(一)HOG特征
查看>>
my_poppin_and_me
查看>>
【Oracle】windows默认共享的打开和关闭?
查看>>
Map/Reduce个人实战--生成数据测试集
查看>>
mysql手动停止无响应查询方法
查看>>
Android UI(三)SlidingMenu实现滑动菜单(详细 官方)
查看>>
linux 通用IO
查看>>
AFNetworking 系列教程
查看>>
VirtualBox安装及使用说明和虚拟机安装XP系统图文教程
查看>>