python对Excel的操作 xlrd、xlwt包详解

文章更新中.............

python中对Excel表格的操作,主要用到两个包,分别是xlrd和xlwt

1.xlrd主要用于读Excel表

2.xlwt则主要用于写Excel

  • python—xlrd

这里我先准备了一些济南天气的一些数据


通过python程序先对数据有一个基本的了解:

path = 'F:\\文件存放处\\weather\\济南.xls'import xlrd
import xlwt
from datetime import date, datetime'''先定义一个函数,对我们所拥有的数据做一个基本的了解'''
def read_excel():# 打开文件workbook = xlrd.open_workbook(path)# 获取所有的sheetprint(workbook.sheet_names())  # ['sheet1', 'sheet2']sheet1_name = workbook.sheet_names()[0]#sheet1 = workbook.sheet_by_index(0)print(sheet1)sheet1 = workbook.sheet_by_name('济南2018年4月份天气详情')print(sheet1)# 显示sheet的名称、行数、列数print(sheet1.name, sheet1.nrows, sheet1.ncols)# 获取整行和整列的值rows = sheet1.row_values(5)  # 第六行的数据cols = sheet1.col_values(2)  # 第三列的数据print(rows)print(cols)# 获取单元格内容(四种获取方式)print(sheet1.cell(1, 0).value.encode('utf-8'))print(sheet1.cell_value(1, 0).encode('utf-8'))print(sheet1.row_values(1)[0].encode('utf-8'))print(sheet1.col_values(0)[1].encode('utf-8'))# 获取单元格内容的数据类型print(sheet1.cell(1, 0).ctype)if __name__ == '__main__':read_excel()

运行结果如下:

['济南2018年4月份天气详情', '济南2018年3月份天气详情', '济南2018年2月份天气详情', '济南2018年1月份天气详情', '济南2017年12月份天气详情', '济南2017年11月份天气详情', '济南2017年10月份天气详情', '济南2017年9月份天气详情', '济南2017年8月份天气详情', '济南2017年7月份天气详情', '济南2017年6月份天气详情', '济南2017年5月份天气详情', '济南2017年4月份天气详情', '济南2017年3月份天气详情', '济南2017年2月份天气详情', '济南2017年1月份天气详情', '济南2016年12月份天气详情', '济南2016年11月份天气详情', '济南2016年10月份天气详情', '济南2016年9月份天气详情', '济南2016年8月份天气详情', '济南2016年7月份天气详情', '济南2016年6月份天气详情', '济南2016年5月份天气详情', '济南2016年4月份天气详情', '济南2016年3月份天气详情', '济南2016年2月份天气详情', '济南2016年1月份天气详情', '济南2015年12月份天气详情', '济南2015年11月份天气详情', '济南2015年10月份天气详情', '济南2015年9月份天气详情', '济南2015年8月份天气详情', '济南2015年7月份天气详情', '济南2015年6月份天气详情', '济南2015年5月份天气详情', '济南2015年4月份天气详情', '济南2015年3月份天气详情', '济南2015年2月份天气详情', '济南2015年1月份天气详情', '济南2014年12月份天气详情', '济南2014年11月份天气详情', '济南2014年10月份天气详情', '济南2014年9月份天气详情', '济南2014年8月份天气详情', '济南2014年7月份天气详情', '济南2014年6月份天气详情', '济南2014年5月份天气详情', '济南2014年4月份天气详情', '济南2014年3月份天气详情', '济南2014年2月份天气详情', '济南2014年1月份天气详情', '济南2013年12月份天气详情', '济南2013年11月份天气详情', '济南2013年10月份天气详情', '济南2013年9月份天气详情', '济南2013年8月份天气详情', '济南2013年7月份天气详情', '济南2013年6月份天气详情', '济南2013年5月份天气详情', '济南2013年4月份天气详情', '济南2013年3月份天气详情', '济南2013年2月份天气详情', '济南2013年1月份天气详情', '济南2012年12月份天气详情', '济南2012年11月份天气详情', '济南2012年10月份天气详情', '济南2012年9月份天气详情', '济南2012年8月份天气详情', '济南2012年7月份天气详情', '济南2012年6月份天气详情', '济南2012年5月份天气详情', '济南2012年4月份天气详情', '济南2012年3月份天气详情', '济南2012年2月份天气详情', '济南2012年1月份天气详情', '济南2011年12月份天气详情', '济南2011年11月份天气详情', '济南2011年10月份天气详情', '济南2011年9月份天气详情', '济南2011年8月份天气详情', '济南2011年7月份天气详情', '济南2011年6月份天气详情', '济南2011年5月份天气详情', '济南2011年4月份天气详情', '济南2011年3月份天气详情', '济南2011年2月份天气详情', '济南2011年1月份天气详情']
<xlrd.sheet.Sheet object at 0x000001F2F2631C50>
<xlrd.sheet.Sheet object at 0x000001F2F2631C50>
济南2018年4月份天气详情 31 6
['2018-04-05', '8', '1', '阴', '西北风', '微风']
['最低气温', '20', '15', '6', '4', '1', '1', '5', '13', '17', '14', '16', '11', '6', '7', '11', '15', '18', '20', '22', '23', '11', '10', '9', '8', '16', '15', '17', '22', '21', '19']
b'2018-04-01'
b'2018-04-01'
b'2018-04-01'
b'2018-04-01'
1Process finished with exit code 0

(1)python读取Excel中单元格的内容返回的有5种类型,即上面示例中的ctype

ctype: 0 empty, 1 string, 2 number, 3 date, 4 boolean, 5 error

那么,我们先看一下我们所拥有的数据类型

# 获取单元格内容的数据类型print(sheet1.cell(1, 0).value, sheet1.cell(1, 0).ctype)print(sheet1.cell(1, 1).value, sheet1.cell(1, 1).ctype)print(sheet1.cell(1, 2).value, sheet1.cell(1, 2).ctype)print(sheet1.cell(1, 3).value, sheet1.cell(1, 3).ctype)print(sheet1.cell(1, 4).value, sheet1.cell(1, 4).ctype)print(sheet1.cell(1, 5).value, sheet1.cell(1, 5).ctype)
运行结果为:
2018-04-01 1
30 1
20 1
晴 1
东南风 1
2级 1

这么说我们所拥有的数据全部为string类型。就连日期都没有出现date类型,内心不禁感到莞尔一笑。

当单元格的ctype = 3 时,说明该单元格的数据为date类型,这时需要用xlrd的xldate_as_tuple来处理为date格式,但是,需要先判断单元格的ctype=3时,才能用此函数进行操作。

date_value = xlrd.xldate_as_tuple(sheet1.cell_value(1, 0), workbook.datemode)
    if (sheet1.cell(row, col).ctype == 3):date_value = xlrd.xldate_as_tuple(sheet1.cell_value(row, col), workbook.datemode)

也可以将date类型在转化为str类型

date_value = (2018, 4, 1, 0, 0)
date_change = date(*date_value[:3]).strftime('%Y/%m/%d')
print(date_change)
print(type(date_change))

程序运行结果如下:

2018/04/01
<class 'str'>
由上可知ctype的值不同,则类型也不同,处理情况与date类型类似,这里就不一一解释了。

(2)获取合并的单元格


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人造细胞能模仿天然细胞感知环境

来源&#xff1a;科技日报据英国帝国理工学院官网近日消息&#xff0c;该校一个研究团队成功开发出一种新型人造细胞&#xff0c;能够模仿天然细胞感知环境中的化学变化并产生反应。如果在未来发展成熟&#xff0c;这项技术可广泛用于生物科技等领域。相关成果已刊登在近期美国…

FileNotFoundError: [Errno 2] No such file or directory: 'test/条形图03.html'

这几天一直在搞百度的一个可视化的工具Echart&#xff0c;感觉确实挺不错的&#xff0c;比matplotlib的可视化好看多了。 今天遇到了两个问题 1、如何导入pyecharts中的get_all_options工具 解决方法&#xff1a; from pyecharts.echarts.option import get_all_options 2、在进…

感觉皮层实质性参与工作记忆的信息保存

来源&#xff1a;脑智卓越创新中心7月17日&#xff0c;《eLife》期刊在线发表了题为《感觉皮层实质性参与工作记忆的信息保存》的研究论文。该研究由中国科学院脑科学与智能技术卓越创新中心&#xff08;神经科学研究所&#xff09;、上海脑科学与类脑研究中心、神经科学国家重…

孙正义看科技未来:今后30年要把钱和精力投向哪里

来源&#xff1a;dang归网孙正义&#xff0c;软银集团创办人对于今后30年来讲&#xff0c;我认为现在个很关键的时刻&#xff0c;尤其是在各位的人生当中。而且现在是一整个概念的转变&#xff0c;我们要包容这个概念的转变&#xff0c;我想先给大家看两张照片。这是美国纽约的…

python+OpenCV图像处理(一)读取、复制、显示、保存

前 言 从2017年入坑人工智能领域开始&#xff0c;就被这一领域深深的所吸引&#xff0c;虽然到现在已经踩了不少坑&#xff0c;但总算有了不少的收获&#xff0c;深感不虚此行&#xff0c;借助强大的python让我快速的向着这一领域靠近&#xff0c;现在流行比较广的人工智能应用…

python+OpenCV图像处理(二)图像像素的访问、通道的合并与分离

图像像素的访问、通道的合并与分离 &#xff08;一&#xff09;像素访问 在第一篇博客中&#xff0c;向大家介绍了&#xff0c;所谓的图像在计算机看来就是一个矩阵&#xff0c;对于RGB图像矩阵一共有三层&#xff0c;分别代表着RGB通道&#xff0c;矩阵中每一个数的大小代表着…

PNG转EPS格式

由于使用LaTeX需要将png格式转为eps格式&#xff0c;如果电脑装了tex软件&#xff0c;则转换方式很简单&#xff1a; 首先打开需要转换的图片所在文件夹。在地址栏输入cmd&#xff1a; 此时会弹出&#xff0c;命令窗口&#xff0c;然后输入bmeps -c Figure1.png Figure1.eps 即…

工业根基,莫让ICT喧宾夺主

来源&#xff1a;英诺维盛公司新工业革命正在得到广泛的关注&#xff0c;而ICT则获得了更高的曝光率和话语权。ICT是信息、通信和技术三个英文词首字母组合&#xff08;Information Communications Technology&#xff09;。显然&#xff0c;ICT是新工业革命必不可少的“新工业…

python+OpenCV图像处理(三)绘制简单的几何图形、显示文字

绘制简单的几何图形、显示文字 &#xff08;一&#xff09;绘制直线和矩形 img np.zeros([512, 512, 3]) # line函数用来画直线&#xff0c;第一个参数可以理解为画布矩阵&#xff0c; # 第二个参数pt1是直线的起始位置&#xff0c;第三个参数pt2是直线的终止位置&#xff0c;…

信息转换原理: 信息、知识、智能的一体化理论

来源&#xff1a;人机与认知实验室【数据、信息、知识、智能除了转换外&#xff0c;是否还有变异、弥聚等&#xff1f;能否把这些变化看成是态、势、感、知结构扭曲而产生的必然现象&#xff1f;】摘要 如何把信息转换为解决问题所需要的智能,是信息科学领域的核心研究课题. 本…

MATLAB(一)Matlab“帮助”的使用

前言MATLAB是matrix和laboratory两个词的组合&#xff0c;意为矩阵工厂&#xff08;矩阵实验室&#xff09;。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真…

javascript 学习笔记(一)

说明&#xff1a;从今天开始从基础抓起学习javascript-完全依据w3school(http://www.w3school.com.cn/js/js_intro.asp)网站顺序。这里我将我认为不好理解的地方积累下来&#xff0c;希望对像我一样的新手有益。 第一篇 JavaScript&#xff1a;写入 HTML 输出 1. javascript有…

[附下载]英特尔中国研究院携手生态伙伴发布《机器人4.0白皮书》

来源&#xff1a;硬蛋迈向云-边-端融合的机器人4.0时代在2019国际人工智能与机器人创新生态峰会上&#xff0c;英特尔中国研究院院长宋继强博士发表了题为《迈向云-边-端融合的机器人4.0时代》的主题演讲。宋院长分析了机器人行业的现状与发展趋势&#xff0c;提出了基于AI、5G…

MATLAB(二)数据的输入

数据的输入 &#xff08;一&#xff09;简单矩阵的输入 1.要直接输入矩阵时&#xff0c;矩阵一行中的元素用空格或逗号分隔&#xff1b;矩阵行与行之间用分号“&#xff1b;”隔离&#xff0c;整个矩阵放在“[ ]”里。 >> a [1, 2, 3, 4;5, 6, 7, 8] a 1 2 3 …

无人驾驶产业的国际比较和PEST分析

来源&#xff1a;智造智库【导读】国家新一代人工智能发展规划中明确提出&#xff0c;发展自动驾驶汽车和轨道交通系统&#xff0c;加强车载感知、自动驾驶、车联网、物联网等技术集成和配套&#xff0c;开发交通智能感知系统&#xff0c;形成我国自主的自动驾驶平台技术体系和…

人类正在进入超级智能时代,论一种新超级智能的崛起

本文发表在2019年7月30号《社会科学报》&#xff0c;是刘锋根据2019年7月出版的著作《崛起的超级智能&#xff1a;互联网大脑》核心内容撰写的一篇文章&#xff0c;也感谢刘慈欣&#xff0c;张亚勤&#xff0c;周鸿祎&#xff0c;王飞跃&#xff0c;约翰.翰兹等专家和好友推荐。…

有道翻译接口问题

博文更新&#xff1a; 更新地址&#xff1a;https://blog.csdn.net/qq_40962368/article/details/89053068 原博文&#xff1a; 在调用有道翻译api接口时&#xff0c;出现了如下错误&#xff1a; 您要翻译的内容是&#xff1a;english Traceback (most recent call last):F…

GE前董事长伊梅尔特谈数字化转型:制造企业这件事做不好,一定没出路

来源&#xff1a;《商业评论》2019年7月号&#xff1b;两位作者&#xff1a;GE前董事长兼CEO杰弗里伊梅尔特&#xff1b;GE第一位常驻教授维贾伊戈文达拉扬无论过去还是现在&#xff0c;企业要实现任何转型都不容易。制造企业想实施数字化转型&#xff1f;这比实施其他任何一种…

MATALB(三)绘图命令

绘图命令 &#xff08;一&#xff09;二维绘图命令 二维绘图的基本命令有plot&#xff0c;loglog&#xff0c;semilogx&#xff0c;semilogy和polar。它们的使用方法基本相同&#xff0c;其不同点是在不同的坐标中绘制图形。plot命令使用线性坐标空间绘制图形&#xff1b;loglo…

微软打压竞争对手:针对AWS、谷歌、阿里云等提高软件许可成本

来源&#xff1a;云头条使用在公共云上托管的专用服务器上运行的微软软件&#xff1f;那就准备好多付钱。微软改变了许可条款&#xff0c;将使微软软件对AWS、谷歌云和阿里云的一些客户来说变得更昂贵。微软现在声称&#xff1a;专用托管云服务的出现使传统外包和云服务之间的界…