第一节:python读取excel文件
写在前面:
(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文件的更多相关文章
- 记录:python读取excel文件
由于最近老是用到python读取excel文件,所以特意记录一下python读取excel文件的大体框架. 库:xlrd(读),直接pip安装即可.想要写excel文件的话,安装xlwd库即可,也是直 ...
- python读取excel文件
一.xlrd的说明 xlrd是专门用来在python中读取excel文档的模块,使用前需要安装. 可以到这https://pypi.python.org/pypi/xlrd进行下载tar.gz文件,然 ...
- python 读取excel文件
方法一:利用pandas import pandas as pd inputfile_1 = "F:\\大论文实验\\福贡县数据\\贫困人口数据_2015.xlsx" data1 ...
- python读取excel文件中所有sheet表格
sales: store: """(1)用load_workbook函数打开excel文件,返回一个工作簿对象 (2)用工作簿对象获取所有的sheet (3)第一个for ...
- 接口测试框架——第二篇-python读取excel文件内容
今天完善excel_module.py文件,上代码: # coding: utf-8 import xlrd class ReadExcel(): def __init__(self, file_na ...
- python读取Excel文件。
#!/usr/bin/python # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import urllib.request import ...
- python之路-随笔 python处理excel文件
小罗问我怎么从excel中读取数据,然后我百了一番,做下记录 以下代码来源于:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html ...
- Python处理Excel文件
因为工作需求,需要审核一部分query内容是否有效,query储存在Excel中,文本内容为页面的Title,而页面的URL以HyperLink的格式关联到每个Cell. 于是本能的想到用Python ...
- 用python的pandas读取excel文件中的数据
一.读取Excel文件 使用pandas的read_excel()方法,可通过文件路径直接读取.注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件.并 ...
随机推荐
- Java反射:Web学习的灵魂
反射:Web学习的灵魂 我们从最初的 javac -HelloWorld.java,到面向对象部分,我们可以将Java代码在计算机中经历的阶段分为三部分:Scource源代码阶段 -- Class类对 ...
- 新拉的项目在idea中启动时报如下错误:org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
今天真的是很苦恼,之前启动项目没有任何问题,今天突然启动时给我报了如下一个错误. 详细报错信息: org.apache.catalina.core.ContainerBase.addChildInte ...
- Redis 常用命令整理
哈希表:设置秒中某个字段 HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN EX: 127.0.0.1:6380> hmset set_map LOGD ...
- (十三)mybatis 整合 ehcache
目录 ehcache mybatis 的 Cache 接口 整合步骤 ehcache ehcache 是一个分布式缓存框架 ! 为什么需要分布式缓存? 在大型的项目中,服务器是肯定不止一台的,每台服务 ...
- python并发编程之多进程(实践篇)
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了multiproce ...
- k8s-traefik默认80端口
vim traefik.yaml kind: Deployment apiVersion: extensions/v1beta1 metadata: name: traefik-ingress-con ...
- Spring MVC <context:annotation-config> 与 <context:component-scan>
在MVC的配置文件中,二者常出现,功能相似.简单做个比较 <context:annotation-config> 用于激活应用上下文中已经注册的bean的注解,无论你的bean是通过什么方 ...
- 图数据库-Neo4j-初探
图数据库-Neo4j-初探 2018-08-17 本次初探主要学习如何安装Neo4j,以及Cypher的基本语法. 1. 安装Neo4j Desktop版本 neo4j-desktop Server版 ...
- SimpleDateFormat线程安全问题
今天线上出现了问题,从第三方获取的日期为 2019-12-12 11:11:11,通过SimpleDateFormat转换格式后,竟然出现完全不正常的日期数据,经百度,得知SimpleDateForm ...
- javascript——HTML对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...