一、使用Python
对Excel
读写数据
1.模块、包、库概念
- Module(模块):扩展名为
.py
的文件就可以称作为模块
- Package(包):在模块只上的概念,为了方便管理
.py
模块文件进行打包。包目录下第一个文件必须是_init_.py
,否则就是普通的文件夹目录,然后是一些模块文件和子目录,加入子目录中也有_init_.py
,那么它就是这个包的子包了
- Library(库):具有相关功能模块的集合。这也是
Python
的一大特色,即具有强大的标准库、第三方库以及自定义模块
- 标准库:就是安装
Python
是自自带的模块
- 第三方库:就是由第三方机构发布,具有特定功能的模块,用户也可以自行开发模块供自己和他人使用
2.Excel
读取库xlrd
- 导入模块的格式:import+模块名
- 导入
xlrd
:import xlrd
,也可以使用别名命名方式import xlrd as xl
,后续可以用xl
代表xlrd
模块
- 调用的格式为:from+模块名+import+方法名
- 导入
xlrd
模块中的open_workbook
,写法为:from xlrd import open_workbook as owb
,后续可以直接使用owb
代表open_workbook
工作薄对象
- ''注意:
xlrd
只能读取xls
格式工作薄数据
3.读取Excel
工作薄、工作表信息
- 在导入读取
xls
文件的库之后,则需要读取Excel
文件的相关信息,以下是一些常见的获取工作薄、工作表对象的方法:
import xlrd
wb = xlrd.open_workbook('工作薄名称.xls')
wsobj = wb.sheets()
wsname = wb.sheet_names()
ws1 = wb.sheet_by_name('工作表名称')
ws2 = wb.sheet_by_index(1)
ws3 = wb.sheets()[1]
4.读取Excel
行、列信息
import xlrd
ws = xlrd.open_workbook('工作薄名.xls').sheet_by_name('工作表名')
crow = ws.nrows
ccol = ws.ncols
row_data = ws.row_values(行号)
col_data = ws.col_values(列号)
cell_data_1 = ws.cell_value(行号,列号)
cell_data_2 = ws.cell(行号,列号).value
- 注意:如果以序号方式获取工作表、单元格的数据,均是从序号0开始的
5.Excel
写入库xlwt
- 使用安装
xlwt
库,具有创建工作薄、工作表、将数据写入到单元格的功能
6.创建Excel
工作薄、工作表和写入单元格
xlwt
可以创建工作薄、保存工作薄,创建工作表以及将数据写入单元格等常见操作
import xlwt
nwb = xlwt.Workbook(encoding = 'utf-8')
nws = nwb.add_sheet('工作表名')
nws.write(1, 2, '要写入的值')
nwb.save('工作薄名.xls')
7.Excel
修改库xlutils
xlutils
可以修改工作薄,要使用xlutils
库就一定要安装xlrd
库和xlwt
库
8.修改工作薄、工作表、单元格
import xlrd
from xlutils.copy import copy
wb = xlrd.open_workbook('工作薄名.xls')
nwb = copy(wb)
nws1 = nwb.add_sheet('工作表名')
nws2 = nwb.get_sheet(序号)
nws3 = nwb.get_sheet('工作表名')
nws1.write(行号, 列表, '值')
nwb.save('工作薄名.xls')
- 注意,最后
nwb.save
保存的工作薄可以和打开时工作薄名一样,也可以不一样,如果一样,则是覆盖原工作薄,不一样则是另存工作薄。代码运行时,被修改的工作薄必须关闭。
二、循环语句与分支语句
1.for...in
循环语句
for item in iterable:
do something
(1)循环字符串
- for循环语句除了遍历指定范围的序列值,也可以遍历向指定的字符串,将字符串中的每个字符逐个输出
for n in 'python':
print(n)
(2)循环指定范围序列数
- 如果我们要循环指定范围的数据,可以使用range函数,一般通过使用for循环语句来逐个取得数字
- range函数语法为:
range(start, stop, [step])
- start:计数从start开始,默认是从0开始
- stop:技术到stop结束,但不包括stop
- step:步长,默认是1
for n in range(1, 10, 2):
print(n)
(3)嵌套循环
- for循环与局可以嵌套使用,但每一层for循环语句注意缩进,下面使用for嵌套循环方式完成九九乘法表的制作
for x in range(1, 10):
for y in range(1, x+1):
print('%dx%d=%-5d' % (y, x, y * x), end = '')
2.for...in
循环语句应用
(1)批量创建工作薄
- 实例:使用for循环语句创建1到12月工作薄,每个工作薄中创建一个名为统计表的工作表
import xlwt
for m in range(1, 13):
wb = xlwt.Workbook(encoding = 'utf-8')
wb.add_sheet('统计表')
wb.save('%02d 月.xls' % m)
(2)制作九九乘法表
- 实例:将九九乘法表写入Excel表格中,只需要定位好对应的单元格,然后将格式化好的数据写入单元格即可
import xlwt
wb = xlwt.Workbook(encoding = 'utf-8')
ws = wb.add_sheet('乘法表')
for x in range(1, 10):
for y in range(1, x + 1):
ws.write(x, y, '%dx%d=%d' % (x, y, x * y))
wb.save('乘法表.xls')
3.while
循环语句
while condition:
do something
n = 0
while n < 5:
n += 1
print(n)
x, y = 0, 0
while x < 9:
x += 1
while y < x:
y += 1
print('%dx%d=%02d\t' % (y, x, x * y)