写在前面:

(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 xlrd
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","第一周")

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

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

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

# -*- coding:utf-8 -*-
import xlrd import sys
reload(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 xlrd
import sys
reload(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 value if __name__ == "__main__":
read_excel(r"F:\AONE\parameter.xlsx","第一周")

运行结果如下图:

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

第一节:python读取excel文件的更多相关文章

  1. 记录:python读取excel文件

    由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...

  2. python读取excel文件

    一.xlrd的说明 xlrd是专门用来在python中读取excel文档的模块,使用前需要安装. 可以到这https://pypi.python.org/pypi/xlrd进行下载tar.gz文件,然 ...

  3. python 读取excel文件

    方法一:利用pandas import pandas as pd inputfile_1 = "F:\\大论文实验\\福贡县数据\\贫困人口数据_2015.xlsx" data1 ...

  4. python读取excel文件中所有sheet表格

    sales: store: """(1)用load_workbook函数打开excel文件,返回一个工作簿对象 (2)用工作簿对象获取所有的sheet (3)第一个for ...

  5. 接口测试框架——第二篇-python读取excel文件内容

    今天完善excel_module.py文件,上代码: # coding: utf-8 import xlrd class ReadExcel(): def __init__(self, file_na ...

  6. python读取Excel文件。

    #!/usr/bin/python # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import urllib.request import ...

  7. python之路-随笔 python处理excel文件

    小罗问我怎么从excel中读取数据,然后我百了一番,做下记录 以下代码来源于:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html ...

  8. Python处理Excel文件

    因为工作需求,需要审核一部分query内容是否有效,query储存在Excel中,文本内容为页面的Title,而页面的URL以HyperLink的格式关联到每个Cell. 于是本能的想到用Python ...

  9. 用python的pandas读取excel文件中的数据

    一.读取Excel文件   使用pandas的read_excel()方法,可通过文件路径直接读取.注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件.并 ...

随机推荐

  1. OpenCV3编程入门.记录

    ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...

  2. Mybatis插件之Mybatis-Plus的实体类注解篇

    主要注释到实体类上的注解: @TableName(value = …) 当数据库名与实体类名不一致或不符合驼峰命名时,需要在此注解指定表名 @TableId(type = …) 指定实体类的属性为对应 ...

  3. superslider样式

    .picScroll-left{ width: 1180px; position:relative; overflow: hidden; .bd{ ul{ li{ float: left; displ ...

  4. centos7 安装jmeter5.1

    前提条件:安装了jdk1.8.因为jmeter5.1需要的环境就是jdk1.8,官网有写的. 1.下载jmeter5.1的安装包 下载地址:https://jmeter.apache.org/down ...

  5. dubbo分布式服务框架-study2

    本文开始对springboot+dubbo集成,使用的版本为springboot 2.0.0.dubbo 2.0.0,步骤如下: 1.添加依赖: <dependency> <grou ...

  6. 【51nod】2590 持续讨伐

    [51nod]2590 持续讨伐 挣扎着卡了卡常过了 记\(dp[i][j]\)为到第\(i\)位,和第\(i\)位相连的部分长度\(x^{j}\)乘上之前部分所有方案\(x^{K}\)总和 转移用二 ...

  7. kmp跑两串的最大相同前后缀 HDU2594

    题意:http://acm.hdu.edu.cn/showproblem.php?pid=2594 如题. 思路: Next数组记录的是pos位置失配时要跑到哪里,所以最后得再添加一个字符‘#’. 连 ...

  8. Scala学习二十一——隐式转换和隐式参数

    一.本章要点 隐式转换用于类型之间的转换 必须引入隐式转换,并确保它们可以以单个标识符的形式出现在当前作用域 隐式参数列表会要求指定类型的对象.它们可以从当前作用域中以单个标识符定义的隐式对象的获取, ...

  9. std::string与char*之临时缓冲区

    std::string与char*之临时缓冲区 原文:https://blog.csdn.net/hsshh1988/article/details/80689330 c++文件读取流程如下: ifs ...

  10. python3 多线程 采集 xpath

    #!/usr/bin/python # -*- coding: UTF-8 -*- '''Thread3 多线程测试采集''' import threading,time,queue,Mongo_ut ...