Python自动化操作Excel

Python自动化操作Excel:

本文记一次使用Python语言操作Excel表格,实现自动判断单元格内容,并完成所需工作,已达到减轻工作量的目的。

环境

语言:python 3.8.1

Excel:后缀为 .xls

所需模块:

xlrd 读取模块

xlwd 写入模块

xlutils 负责后续拷贝使用(别问为什么安这个模块,安排就完事了)

一、安装所需模块和库

1
2
3
pip install xlrd
pip install xlwt
pip install xlutils

二、提示

别问为什么会出现这个提示,(PS:因为有好多小伙伴还分不清Excel专业名词,避免后续说作者文章无用(๑⁼̴̀д⁼̴́๑)!!!)特此提示

假设我用的是名为“超神学院学生信息表”的表格,后缀为.xls。这个里面有两个工作表,“各班级”和“学生绩点”。

那么,一个Excel文件,就相当于一个“工作簿(Workbook)”,一个”工作簿“里可以包含多个“工作表(sheet)”

提示结束~

三、使用xlrd读取需要使用的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import xlrd			#导入xlrd读取模块

# 获取工作簿对象
work = xlrd.open_workbook(r"F:\Desktop\超神学院学生信息表.xls",formatting_info = True) #文件路径

'''
这时候有人会问了,开头的r是什么,可不可以不加?后面的formatting_info这么长可不可以不写?
答案是————不可以!!!
一定得加,在路径的前面加r,即保持字符原始值得意思,否则后续会报错,别问我为什么知道的,我没错,我加了 (ー̀дー́)
至于后面的那一串串,很重要,这个参数是保留原格式的,没有的话,你会发现新的Excel一点样式都没有,综上所述,还是加上吧。
'''
# 获取工作表对象,对工作簿对象进行操作

# 获取所有sheet的名字
names = work.sheet_names()
print(names) #['各班级','学生绩点']会以列表的方式,输出所有的表名

# 通过sheet索引获得sheet对象
worksheet = work.sheet_by_index(0)
peint(worksheet) #<xlrd.sheet.Sheet object at 0x000001B98D99CFD0>

# 通过sheet名获得sheet对象
worksheet = work.sheet_by_name("各班级")


# 接下来我们获取工作表的基本信息,对工作表对象进行操作

name = worksheet.name #获取表的姓名
print(name) #各班级

nrows = worksheet.nrows #获取该表的总行数
print(nrows) #15

ncols = worksheet.ncols #获取该表的总列数
print(ncols) #13


# 获取某一单元格的数据,在xlrd中,工作表的行和列都是从0开始计数的

# 通过坐标读取表格中的数据
cell_value1 = worksheet.cell_value(0,0) #班级名
cell_value2 = worksheet.cell(0,0).value #班级名
cell_value3 = worksheet.row(0)[0].value #班级名

# 获取指定单元格的内容类型
ctype1 = worksheet.cell(0,0).ctype #会返回单元格内容的数据类型

'''
共有6种类型:返回0 empty 表示空值
返回1 string 表示字符型
返回2 number 表示数字型
返回3 date 表示日期型
返回4 boolean 表示布尔型
返回5 error 表示错误
'''

四、使用xlwt模块对文件进行写操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import xlwt		#导入xlwt模块

# 创建一个工作簿对象,相当于创建了一个Excel文件
work = xlwt.Workbook(encoding="utf-8",style_compression=0)

'''
Workbook类初始化的时候有encoding和style_compression参数
encoding:设置字符编码,一般要设置:w = Workbook(encoding='utf-8'),就可以在Excel中输出中文了。默认是ascii
style_compression:表示是否压缩,不常用
'''

# 在相应的工作簿中创建工作表

# 创建一个sheet对象,一个sheet对象对应Excel文件中的一张表格
worksheet = work.add_sheet('test',cell_overwrite_ok=True)
# test是这张表的名字,cell_overwrite_ok,表示是否可以覆盖单元格,其实是Worksheet实例化的一个参数,默认值是False

# 向表test中写入数据
worksheet.write(0,0,'班级') #向0行0列,写入班级

# 也可以用变量的方式写入数据
test1 = "班级"
worksheet.write(0,0,test1)

# 最后,将上述操作保存到指定的Excel文件中
work.save('DataSource\\test1.xls')

五、使用xlutils库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import xlrd
import xlwt
import xlutils.copy #没错,我们需要这个模块

'''
相信看完上述文章的小伙伴一定发现了,xlwt模块写入有局限性,只能写入新建的Excel,那对于想直接修改指定表的小伙伴来说该怎么办呢,我们可以用xlutils库中的copy功能来解决这个问题。
'''

xd = xlrd.open_workbook(r"F:\Desktop\超神学院学生信息表.xls",formatting_info = True) #打开文件
xt = xlutils.copy.copy(xd) #将读取的文件复制一份
xtsheet = xt.get_sheet(0) #根据索引获取第一个sheet表对象
xtsheet.write(0,0,"I Love you !") #向单元格内写入内容

xt.save('DataSource\\test1.xls') #保存

'''
解决问题的方式就是,我先读取文件,然后复制一份,这样复制后的就可以写入了。
'''

以上就是python实现与excel的交互了,注意 注意 注意,重要的话说三遍:

xlrd与xlwt只适用于后缀为.xls的文件,如果是.xlsx文件后缀的,还会有别的模块使用,后续有时间了会继续更新。

写作不易,转载请注明出处,谢谢~mua

祝:遇到的陌生人,工作顺利,身体健康,万事顺意。O(≧▽≦)O

文章目录
  1. 1. 环境
    1. 1.1. 一、安装所需模块和库
    2. 1.2. 二、提示
    3. 1.3. 三、使用xlrd读取需要使用的文件
    4. 1.4. 四、使用xlwt模块对文件进行写操作
    5. 1.5. 五、使用xlutils库
    6. 1.6. 祝:遇到的陌生人,工作顺利,身体健康,万事顺意。O(≧▽≦)O
dn-lbstatics.qbox.me