Excel
是Microsoft
为使用Windows
和Apple Macintosh
操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel
成为最流行的个人计算机数据处理软件。在1993
年,作为Microsoft Office
的组件发布了5.0版之后,Excel
就开始成为所适用操作平台上的电子制表软件的霸主。
1、介绍
excel
本身是有很多功能的,比如说格式调试,图表展示,公式计算等内容,但是对于我们在python
爬虫中,我们关注的仅仅是纯数据,其他的格式内容,咱们暂时不提。
我们使用python
操作excel
的时候,我们要使用两个模块,分别是xlrd
和xlwt
,下面我们就分别使用python
下的pip
命令来安装下这两个模块。
2、安装
pip install xlrd=1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install xlwt -i https://pypi.tuna.tsinghua.edu.cn/simple
3、python读取excel表格
3.1 创建测试文件
首先我们先创建一个名字为ceshi.xlsx
的测试文件,以供我们使用,文件如下:
3.2 读取excel中所有sheet的信息
在这里有好几种方式,我们分别来尝试下;
(1)获取所有的sheet
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Names = Workbook.sheet_names()
print(Sheet_Names)
运行结果如下:
['汇总', '姓名', '年龄', '地区', '出生年月', '爱好']
(2)根据索引获取sheet
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Names = Workbook.sheet_by_index(0) print(Sheet_Names.name)
运行结果如下:
汇总
从上面我们可以看到,我们根据索引为“0”,获取到了第一个sheet
,那么同理,要获取第二个sheet
的话,我们是不是应该配置索引为“1”即可;
(3)根据名字获取sheet
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_name('出生年月') print(Sheet_Name.name)
运行结果如下:
出生年月
(4)获取所有sheet
对象
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Names = Workbook.sheets()
print(Sheet_Names)
for i in Sheet_Names:
print(i.name)
运行结果如下:
[<xlrd.sheet.Sheet object at 0x000001554E142E20>, <xlrd.sheet.Sheet object at 0x000001554E142F10>, <xlrd.sheet.Sheet object at 0x000001554E142F40>, <xlrd.sheet.Sheet object at 0x000001554E142F70>, <xlrd.sheet.Sheet object at 0x000001554E151A60>, <xlrd.sheet.Sheet object at 0x000001554E131DC0>] 汇总 姓名 年龄 地区 出生年月 爱好
3.3 获取该sheet中的行数和列数
import xlrd
WorkBook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = WorkBook.sheet_by_name('汇总')
print("名字为{}的sheet中,一共有{}行".format(Sheet_Name.name, Sheet_Name.nrows))
print("名字为{}的sheet中,一共有{}列".format(Sheet_Name.name, Sheet_Name.ncols))
运行结果如下:
名字为汇总的sheet中,一共有9行 名字为汇总的sheet中,一共有5列
4、使用python获取excel中指定单元格的数据
Cell
就表示单元格,单元格也就是excel
中的最小单位,一个个小格子就是单元格。且,在
python
中,每一行和列都是从0开始,从左上角依次类推+1
的。
4.1 获取指定行和列的cell对象
方法:
sheet.cell(row,col)
示例代码:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.cell(0, 1))
# 获取第0行,第1列的数据,也就是B1单元格的数据
运行结果如下:
text:'年龄'
4.2 获取指定行的某几列的cell对象
方法:
sheet.row_slice(row,start_col,end_col)
示例代码:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.row_slice(1, 0, 5))
# 获取第一行的0-5列之间的,不包括第5列
运行结果如下:
[text:'张三', number:18.0, text:'北京', xldate:36526.0, text:'吃饭']
4.3 获取指定列的某几行的cell对象
方法:
sheet.col_slice(col,start_row,end_row)
示例代码如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.col_slice(0, 0, 5))
# 获取第0列的,0-5行之间的数据,不包括第5行
运行结果如下:
[text:'姓名', text:'张三', text:'李四', text:'王五', text:'赵六']
4.4 获取指定行和列的值
方法:
sheet.cell_value(row,col)
示例代码如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.cell_value(1, 2))
# 获取第1行,第二列的单元格的数据,即C2的数据
运行结果如下:
北京
4.5 获取指定行的某几列的值
方法:
sheet.row_values(row,start_col,end_col)
示例代码如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.row_values(1, 2, 5))
# 获取第一行,第2-5列的值
运行结果如下 :
['北京', '2000-1-1', '吃饭']
4.6 获取指定列的某几行的值
方法:
sheet.col_values(col,start_row,end_row)
示例代码如下:
import xlrd
Workbook = xlrd.open_workbook('ceshi.xlsx')
Sheet_Name = Workbook.sheet_by_index(0) print(Sheet_Name.col_values(4, 0, 3))
# 获取第4列,0-3行的值,不包括第三行
运行结果如下:
['爱好', '吃饭', '睡觉']
5、excel中Cell的数据类型
-
xlrd.XL_CELL_TEXT(Text)
:文本类型; -
xlrd.XL_CELL_NUMBER(Number)
:数值类型; -
xlrd.XL_CELL_DATE(Date)
:日期时间类型; -
xlrd.XL_CELL_BOOLEAN(Bool)
:布尔类型; -
xlrd.XL_CELL_BLANK
:空白数据类型。
6、使用python往excel中写入数据
6.1 步骤梳理
-
导入
xlwt
模块 -
创建一个
Workbook
对象 -
创建一个
Sheet
对象 -
使用
sheet.write(row,col,data)
方法把数据写入到Sheet
下指定行和列中 -
保存成
Excel
文件
6.2 示例代码
import xlwt
import random
Workbook = xlwt.Workbook(encoding='utf-8')
Sheet_Name = Workbook.add_sheet('运维家')
Headers = ['姓名', '年龄', '地区']
for index, Header in enumerate(Headers):
Sheet_Name.write(0, index, Header)
Names = ['张三', '李四', '王五']
Areas = ['北京', '山西', '上海']
for index, Name in enumerate(Names):
Sheet_Name.write(index + 1, 0, Name)
Sheet_Name.write(index + 1, 1, random.randint(20, 40))
Sheet_Name.write(index + 1, 2, random.choice(Areas))
Workbook.save('ceshi2.xls')
运行之后,会生成一个名字为ceshi2.xls
的文件,我们打开看看是什么样子的,如下图:
从上面看,这个文件是符合我们的预期的。
7、使用python在已有的excel文件中新增内容
7.1 步骤梳理
-
导入
xlrd
模块 -
读取已有的
excel
文件,生成一个对象 -
使用
put_cell(self, rowx, colx, ctype, value, xf_index)
方法添加数据 -
导入
xlwt
模块 -
新建一个
workbook
对象 -
新建一个
sheet
对象 -
将刚添加过数据的
sheet
每个单元格的数据读取出来,并写入到新的excel
文件中 -
保存
excel
文件
7.2 示例代码
import xlrd, xlwt
Workbook = xlrd.open_workbook('ceshi2.xls')
Sheet_Name = Workbook.sheet_by_index(0)
Sheet_Name.put_cell(4, 0, xlrd.XL_CELL_TEXT, '赵六', None)
Sheet_Name.put_cell(4, 1, xlrd.XL_CELL_TEXT, '30', None)
Sheet_Name.put_cell(4, 2, xlrd.XL_CELL_TEXT, '吃饭', None)
Workbook_1 = xlwt.Workbook(encoding='utf-8')
Sheet_Name_1 = Workbook_1.add_sheet(Sheet_Name.name)
for row in range(Sheet_Name.nrows):
for col in range(Sheet_Name.ncols):
Sheet_Name_1.write(row, col, Sheet_Name.cell_value(row, col))
Workbook_1.save('ceshi3.xls')
运行之后,会生成一个ceshi3.xls
文件,不止将ceshi2.xls
文件中的内容放置到了ceshi3.xls
文件中,并新增了一行信息,如下图:
报错解决
报错一
xlrd.biffh.XLRDError: Excel xlsx file; not supported
这个意思是你的xlrd
版本太高了,卸载重新安装一个1.2.0
版本的就好了。
pip install xlrd==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
学习资源推荐
除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。
这里给大家展示一下我进的最近接单的截图
😝朋友们如果有需要的话,可以点击下方链接领取或者V扫描下方二维码联系领取,也可以内推兼职群哦~
🎁 CSDN大礼包,二维码失效时,点击这里领取👉:【学习资料合集&相关工具&PyCharm永久使用版获取方式】
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
1.Python学习路线
2.Python基础学习
01.开发工具
02.学习笔记
03.学习视频
3.Python小白必备手册
4.数据分析全套资源
5.Python面试集锦
01.面试资料
02.简历模板
文章来源:https://www.toymoban.com/news/detail-778662.html
🎁 CSDN大礼包,二维码失效时,点击这里领取👉:【学习资料合集&相关工具&PyCharm永久使用版获取方式】文章来源地址https://www.toymoban.com/news/detail-778662.html
到了这里,关于python如何操作excel,在excel中读取和写入数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!