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;这项技术可广泛用于生物科技等领域。相关成果已刊登在近期美国…

scipy的butter带通滤波器nvalid value encountered in reduce ret = umr_sum(arr, axis, dtype, out, keepdims)

使用scipy的butter带通滤波器时报错&#xff1a; RuntimeWarning: invalid value encountered in reduce ret umr_sum(arr, axis, dtype, out, keepdims) RuntimeWarning: overflow encountered in reduce ret umr_sum(arr, axis, dtype, out, keepdims) RuntimeWarning: …

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;、上海脑科学与类脑研究中心、神经科学国家重…

python找出NAN值所在处

np.isnan() 会返回一个bool矩阵

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

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

python butter带通滤波器滤波出来的信号有NAN值或者分类效果极差

在使用scipy.signal.butter带通滤波器对信号滤波后&#xff0c;信号值全变为NAN&#xff0c;或者就算信号没有变为NAN&#xff0c;送入分类器的分类效果也极差 解决方法&#xff1a; 带通滤波器的阶数设置得太高了&#xff0c;需要设低一些

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

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

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

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

团队项目冲刺第三天

团队项目冲刺第三天个人工作总结如下&#xff1a; 1.昨天干了什么&#xff1f; 昨天熟悉了安卓应用开发的具体流程&#xff0c;着重看了用户界面设计部门的安卓开发知识&#xff0c;如某些控件的使用方法等等。 2.今天准备干什么或干了什么&#xff1f; 今天准备开发出了一个简…

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是新工业革命必不可少的“新工业…

github高级搜索

一、明确搜索仓库标题、仓库描述、README 1.只想查找仓库名称包含XX的仓库。语法&#xff1a; in:name 关键词 2.查找描述的内容 in:descripton 关键词 3.查README文件包含特定关键词 in:readme 关键词 二、明确搜索 star、fork 数大于多少的 1. star 数大于 1000 的XX 仓…

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

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

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

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

exit(0)和exit(1)区别

exit(0)&#xff1a;正常退出程序&#xff1b; exit(1)&#xff1a;非正常退出程序&#xff1b; return&#xff1a;返回。 return是语言级别的&#xff0c;表示调用堆栈的返回&#xff1b; exit是系统调用级别的&#xff0c;表示一个进程的退出。 转载于:https://www.cnblogs.…

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

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

github注册账号一直验证失败

github注册账号第二步是验证&#xff0c;选择图形验证需要将两幅图摆正&#xff0c;我在验证的时候第一幅图可以成功验证&#xff0c;但第二幅图一直失败&#xff0c;明明摆正了却一直说没有摆正&#xff0c;要不就说用时太长&#xff08;真是有够恶心的&#xff09;&#xff0…

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…