购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 工作簿的基本操作

启动Excel程序后,就可以进行工作簿的基本操作了,如打开、新建和保存工作簿等。

2.2.1 open()函数和close()函数——打开和关闭工作簿

Books对象的open()函数用于打开工作簿并返回一个Book对象。其语法格式如下:

表达式.open(fullname)

参数说明:

表达式:一个Books对象,通常用App对象的books属性来创建。

fullname:指定一个路径(可为路径字符串或路径对象),指向要打开的工作簿。该工作簿必须真实存在,且不能处于已打开的状态。

Book对象的close()函数用于关闭工作簿,其语法格式如下:

表达式.close()

参数说明:

表达式:一个Book对象,通常用打开或新建工作簿的方式来创建。

应用场景 打开并关闭指定的工作簿

◎代码文件:open()函数和close()函数.py

◎数据文件:员工档案表.xlsx

本案例要使用open()函数打开文件夹“F:\python\第2章”中的工作簿“员工档案表.xlsx”,然后使用close()函数将其关闭。演示代码如下:


1 import xlwings as xw # 导入xlwings模块并简写为xw
2 app = xw.App(visible=True, add_book=False) # 启动Excel程序
3 workbook = app.books.open('F:\\python\\第2章\\员工档案表.xlsx') # 打开指定的工作簿
4 workbook.close() # 关闭打开的工作簿
5 app.quit() # 退出Excel程序

运行以上代码,即可自动启动Excel程序,打开并关闭工作簿“员工档案表.xlsx”。

2.2.2 add()函数和save()函数——新建和保存工作簿

Books对象的add()函数用于新建一个工作簿。其语法格式如下:

表达式.add()

参数说明:

表达式:一个Books对象,通常用App对象的books属性来创建。

Book对象的save()函数用于保存工作簿,其语法格式如下:

表达式.save(path)

参数说明:

表达式:一个Book对象,通常用打开或新建工作簿的方式来创建。

path:指定工作簿的保存路径(可为路径字符串或路径对象)。如果省略该参数并且工作簿之前从未被保存过,则使用默认文件名(如“工作簿1.xlsx”)保存在当前工作目录下。

需要注意的是,save()函数在遇到重名文件时会直接覆盖,并且不给出任何提示。

应用场景1 新建并保存一个工作簿

◎代码文件:add()函数和save()函数1.py

本案例要使用add()函数新建一个空白工作簿,再使用save()函数将该工作簿保存到文件夹“F:\python”中,文件名为“表.xlsx”。演示代码如下:


1 import xlwings as xw # 导入xlwings模块并简写为xw
2 app = xw.App(visible=True, add_book=False) # 启动Excel程序
3 workbook = app.books.add() # 新建一个工作簿
4 workbook.save('F:\\python\\表.xlsx') # 保存新建的工作簿
5 workbook.close() # 关闭工作簿
6 app.quit() # 退出Excel程序

运行以上代码,可以看到在文件夹“F:\python”中新建了一个工作簿“表.xlsx”,如右图所示。需要注意的是,用于保存工作簿的文件夹必须提前创建好。如果读者想要通过编写代码来创建文件夹,可参考1.2.3节。

应用场景2 批量新建并保存工作簿

◎代码文件:add()函数和save()函数2.py

假设要在文件夹“F:\test”中新建10个工作簿,文件名分别为“表1.xlsx”“表2.xlsx”……“表10.xlsx”,可以结合使用for语句、range()函数、add()函数和save()函数来实现。演示代码如下:


1 import xlwings as xw # 导入xlwings模块并简写为xw
2 app = xw.App(visible=True, add_book=False) # 启动Excel程序
3 for i in range(1, 11): # 构建1~10的整数序列并从中依次取值
4      workbook = app.books.add() # 新建一个工作簿
5      workbook.save(f'F:\\test\\表{i}.xlsx') # 保存新建的工作簿
6      workbook.close() # 关闭工作簿
7 app.quit() # 退出Excel程序

运行上述代码,在文件夹“F:\test”中可看到按要求新建的10个工作簿,如右图所示。

第3~6行代码使用for语句构造了一个循环来完成工作簿的批量新建和保存。

第3行代码中的range()函数是Python的内置函数,用于创建一个整数等差序列,其语法格式如下:

range(stop) 或 range(start,stop,step)

参数说明:

start、stop、step:分别代表序列的起始值、终止值、步长,必须为整数。需要注意的是,序列的计数到stop结束,但不包括stop,这种特性称为“左闭右开”。在第1种语法格式中,以0作为起始值,以1作为步长。在第2种语法格式中,如果省略step参数,则以1作为步长。

range()函数的演示代码如下:


1 range(5) # 等价于range(0, 5)或range(0, 5, 1),创建的整数序列为0、1、2、3、4
2 range(1, 6) # 等价于range(1, 6, 1),创建的整数序列为1、2、3、4、5
3 range(0, 30, 5) # 创建的整数序列为0、5、10、15、20、25
4 range(0, 10, 3) # 创建的整数序列为0、3、6、9

第5行代码中的f'F:\\test\\表{i}.xlsx'是一种拼接字符串的语法格式,称为f-string,它的优点是无须事先转换数据类型就能将不同类型的数据拼接成字符串。f-string的基本语法格式是用字母f或F引领字符串,然后在字符串中用大括号{}标明要拼接的变量。演示代码如下:


1 name = '小明'
2 score = 90
3 a = f'{name}考了{score}分'
4 print(a)

上述代码的工作原理和运行结果如下图所示。

2.2.3 fullname属性——获取工作簿的绝对路径

Book对象的fullname属性用于获取指定工作簿的绝对路径。其语法格式如下:

表达式.fullname

参数说明:

表达式:一个Book对象,通常用打开或新建工作簿的方式来创建。

应用场景 获取指定工作簿的绝对路径

◎代码文件:fullname属性.py

◎数据文件:汽车备案信息.xlsx

假设在文件夹“F:\python\第2章”中有一个工作簿“汽车备案信息.xlsx”,在该文件夹中创建一个代码文件,然后在代码文件中输入如下代码:


1 import xlwings as xw # 导入xlwings模块并简写为xw
2 app = xw.App(visible=False, add_book=False) # 启动Excel程序
3 workbook = app.books.open('汽车备案信息.xlsx') # 打开指定的工作簿
4 book_path = workbook.fullname # 获取指定工作簿的绝对路径
5 print(book_path) # 输出获取的绝对路径
6 workbook.close() # 关闭工作簿
7 app.quit() # 退出Excel程序

代码运行结果如下:


1 F:\python\第2章\汽车备案信息.xlsx

2.2.4 name属性——获取工作簿的文件名

Book对象的name属性用于获取指定工作簿的文件名(包含扩展名)。其语法格式如下:

表达式.name

参数说明:

表达式:一个Book对象,通常用打开或新建工作簿的方式来创建。

应用场景 获取指定工作簿的文件名

◎代码文件:name属性.py

◎数据文件:汽车备案信息.xlsx

本案例要使用name属性获取文件夹“F:\python\第2章”中工作簿“汽车备案信息.xlsx”的文件名。演示代码如下:


1 import xlwings as xw # 导入xlwings模块并简写为xw
2 app = xw.App(visible=False, add_book=False) # 启动Excel程序
3 workbook = app.books.open('F:\\python\\第2章\\汽车备案信息.xlsx') # 打开指定的工作簿
4 book_name = workbook.name # 获取工作簿的文件名
5 print(book_name) # 输出获取的文件名
6 workbook.close() # 关闭工作簿
7 app.quit() # 退出Excel程序

代码运行结果如下: pc3AbLOC1t8QlKiwlWPQfz1UB62DZRx6zaOvwrxUrDIxWb/WSj+cH9ToJWCGMddn


1 汽车备案信息.xlsx
点击中间区域
呼出菜单
上一章
目录
下一章
×