高效办公 1.2 用Python新建Excel文件

1.2 用Python新建Excel文件

1.2.1 Excel的相关术语

workbook[ˈwəːkbʊk]:工作簿对象,工作簿文件。
worksheet[ˈwəːkʃiːt]:工作表。
cell[sel]:单元格。

1.2.2 openpyxl.Workbook( )新建工作薄

1.2.3 对象.save( )保存工作薄

任务1
在当前文件夹新建一个Excel 文件,命名为【学生花名册1.xlsx】并保存在当前目录。

# 导入库
import openpyxl

# 用openpyxl 库 的Workbook 类来创建一个新的工作薄 
# 新建得到的是一个工作薄对象 
# 因此wb = 一个工作薄对象
# 新建时参数为空
# 新建成功后在不保存的情况下我们看不到工作薄对象
wb = openpyxl.Workbook( )

# 查看wb 的类型
# wb = workbook = 一个工作薄对象
print(type(wb))

# 用对象的save方法将工作薄保存在本地
# 并命名为【学生花名册1.xlsx】
# 对象.save(path)
# 学生花名册1.xlsx=./学生花名册1.xlsx
wb.save('学生花名册1.xlsx')

【终端输出】

<class 'openpyxl.workbook.workbook.Workbook'>

代码运行后,工作簿【学生花名册1.xlsx】新建成功,如下图所示:

【知识点汇总】
openpyxl 库 – Workbook 类:创建新的工作薄
openpyxl 库 – load_workbook函数:打开工作薄
工作簿对象 – save方法:保存工作薄

【代码解析】
1.先用import导入openpyxl库。

2.新建工作薄:wb = openpyxl.Workbook( )
用openpyxl库中的Workbook类新建一个工作薄对象赋值给变量wb。
wb 就表示刚才新建的工作薄对象。
上述代码对应的人工操作:

2.保存文件:wb.save('学生花名册1.xlsx')
将工作薄保存在本地,并命名为【学生花名册1.xlsx】
我觉得可以把sava理解成另存为这个动作:

【注意事项】
1、一定要有后缀名xlsx,否则电脑不知道你要新建的是什么类型的文件。
2、Workbook类 的首字母 W必须是大写。
3、工作薄新建成功后,默认自动创建1个工作表【sheet】,如下图所示:

1.2.4 openpyxl.load_workbook 打开工作薄

【准备工作】
手动打开【学生花名册1.xlsx】,然后单元格【A1】中输入【姓名】,然后关闭文件。

# 导入库
import openpyxl

# 用openpyxl库的load_workbook方法打开学生花名册1.xlsx文件。 
# wb = 一个工作薄对象 =workbook
wb = openpyxl.load_workbook('学生花名册1.xlsx')

# 查看wb 的类型
print(type(wb))

# 对象.save(path)
wb.save('学生花名册1.xlsx')
wb.save('学生花名册2.xlsx')

【终端输出】

<class 'openpyxl.workbook.workbook.Workbook'>

上述代码运行后,左侧多了一个【学生花名册2.xlsx】文件,大家手动打开两个文件,发现【学生花名册2.xlsx】文件中的【A1】单元格里也有【姓名】两个字。

wb.save(‘学生花名册1.xlsx’)与打开的xlsx文件名相同,作用就是仅起到保存的作用。
wb.save(‘学生花名册2.xlsx’)与打开的xlsx文件名不相同,这里的作用就是另存为。
path相同=保存。
path不相同=另存为。

工作中,我们打开一个工作薄,电脑会呈现出一个具体的文件,但是Python不会有具体的显示,但是会创建一个workbook对象。
必须用Python打开工作薄,我们才有操作的对象,打开的作用在后面会体现出来。
人工手动和Python打开的都是一个实际存在的对象,只是一个呈现在电脑上,肉眼可见,一个肉眼不可见。

load [ləʊd]:原意是负荷、负载,这里有载入、读取文档的意思。

openpyxl 库 – load_workbook(path)函数:打开工作薄
openpyxl.load_workbook('学生花名册1.xlsx')
用openpyxl库的load_workbook方法打开学生花名册1.xlsx文件。
方法的参数为文件的路径。

【温馨提示】
使用save保存时,请先手动关闭Excel文件,不关闭会有运行错误提示。
若是重命名,则不会有错误提示。

save [seɪv]:原文积攒、储存,网络释义为保存。
path[pɑːθ]:路径。

练习1
1)在当前文件夹里新建一个【花名册】文件夹。
2)打开【学生花名册1.xlsx】文件。
3)将【学生花名册1.xlsx】存储到【花名册】文件夹中,并命名为【学生花名册3.xlsx’】。

# 导入库
import openpyxl
import os 

# mkdir:新建目录=新建文件夹
# ./花名册= 花名册 ( .可以省略不写)
os.mkdir('花名册')

# 打开文件
wb = openpyxl.load_workbook('学生花名册1.xlsx')
wb.save('花名册/学生花名册3.xlsx')

练习2
1)在上一级文件夹里新建一个【roster】文件夹。
2)打开【学生花名册1.xlsx】文件。
3)将【学生花名册1.xlsx】存储到【roster】文件夹中,并命名为【roster3.xlsx’】。

# 导入库
import openpyxl
import os 

# mkdir:新建目录=新建文件夹
# .. 表示上一级
os.mkdir('../roster')

# 打开文件
wb = openpyxl.load_workbook('学生花名册1.xlsx')
wb.save('../roster/roster3.xlsx')

roster[ˈrɒstə]:花名册。

大家运行后注意观察新建文件夹的位置,进一步了解相对路径...,即同级和上一级目录的区别。

1.2.5 批量新建工作薄

任务2
在【花名册】文件夹中新建4个工作薄,分别命名为【1年级名册.xlsx】【2年级名册.xlsx】【3年级名册.xlsx】【4年级名册.xlsx】。

import openpyxl

# for循环搭配range函数控制循环次数
# 通过循环来重复新建工作薄这个动作
for i in range(1,5) :
    # 用openpyxl 库 的Workbook 类来创建一个新的工作薄 
    wb = openpyxl.Workbook()
    
    # 对象.save(path)保存文件
    wb.save('花名册/{}年级花名册.xlsx'.format(i))

【第二种写法】

import openpyxl

# for循环搭配range函数控制循环次数
# 通过循环来重复新建工作薄这个动作
for i in range(5,9) :
    # 用openpyxl 库 的Workbook 类来创建一个新的工作薄 
    wb = openpyxl.Workbook()
    
    # 对象.save(path)保存文件
    wb.save('花名册/%d年级花名册.xlsx'%i)

代码运行成功后,文件新建成功,如下图所示:

wb.save(‘花名册/{}年级花名册.xlsx’.format(i))
wb.save(‘花名册/%d年级花名册.xlsx’%i)
上述两句代码实现的功能是一样的,两个都是实现字符串格式化。
format相关知识参考笔记【4.14 字符串的拼接即格式化.format】
%d 的格式化知识后期会写。

【温馨提示】
某个动作是重复的,例如新建4个工作薄这个动作就是重复的,这时候我们就可以考虑用for+range 来实现。
概括为:重复的动作用for+range
例如:在爬虫中我们也是用 for+range来控制访问的网页数。

【知识回顾:range函数】
range( )函数的作用:生成一个整数序列(即列表)。
range(开始数字,结束数字,步长)

【温馨提示】
1.注意不要忘记for循环后的英文冒号:
2.参数含前不含后,意思是(1,3)含1不含3,所以输出1,2。
3.详细内容请参考【6.4 序列及range函数】。

【代码演示】

# 新建空列表用于存储for循环输出的元素i
list_0 = []
for i in range(3) :
    # append 为列表增加元素i
    list_0.append(i)
print(list_0)

list_1 = []
for i in range(1,3) :
    list_1.append(i)
print(list_1)

【终端输出】

[0, 1, 2]
[1, 2]

1.2.6 总结

来源:安迪python学习笔记

物联沃分享整理
物联沃-IOTWORD物联网 » 高效办公 1.2 用Python新建Excel文件

发表评论