当前位置:  首页>> 技术小册>> Python与办公-玩转Excel

首先你要知道Excel的基本概念,Excel文档是一个文件,文件类型一般是xls或xlsx,一个Excel文件称为一个工作簿(WorkBook),工作簿里可以有一个或多个工作表(Sheet),每个工作表又有多行多列的单元格(Cell),一般我们的数据都是写在单元格里。知道了基础概念之后我们再来学习如何操作Excel文件,最开始的操作应该是新建一个新的文档,或者打开一个已有的文档,最后的操作应该是保存文档并关闭文档,所以我们先来学习一下怎么打开和保存文档。
6.2.1 新建工作簿在openpyxl中,一个工作簿对应一个WorkBook类,所以如果需要新建一个工作簿,只需要实例化一个WorkBook对象即可:

  1. from openpyxl import Workbook
  2. wb = Workbook()

6.2.2 保存工作簿
尽管刚刚新建的工作簿是一个空的工作簿,但也可以保存,说到保存文件也许你会想到open()函数,但这里不用,openpyxl已经帮我们写好了保存的方法,只要调用WorkBook对象的save()方法即可,参数是文件路径,可以使用绝对路径也可以使用相对路径,比如说我们把它保存到当前位置的excel_files文件夹里,文件名是test.xlsx。注意一下,文件名和文件扩展名是可以随意写的,即使你把文件名写为test.xls,但保存的文件类型依然是xlsx类型,因为openpyxl根本就不支持xls类型,代码如下:

  1. from openpyxl import Workbook
  2. wb = Workbook()
  3. wb.save("./excel_ files/test.xlsx")

还要注意一下,如果要保存的路径不存在肯定是会报错的,比如说当前路径下根本没有excel_files这个文件夹,所以你想到怎么处理了吗?捕获异常?也可以吧,但更好的办法应该是判断路径是否存在,若不存在就创建,所以要用到我们前面学过的os模块,代码如下:

  1. import os.path
  2. from openpyxl import Workbook
  3. wb = Workbook()
  4. path = "./excel_ files" # 不包含文件名的文件路径
  5. file_name = "test.xlsx" # 文件名
  6. file_path = os.path.join(path,file_name) # 拼接文件路径和文件名
  7. print( file_path) # 输出:./excel_ files\test.xlsx
  8. # 如果文件路径不存在则新建
  9. if not os.path.exists(path):
  10. os.makedirs(path)
  11. wb.save( file_path)

当运行完上面的代码之后就会发现当前代码文件所在文件夹里新建了一个excel_files文件夹,里面有个test.xlsx文件,你可以使用Excel或者WPS打开看一下,其实也没什么好看的,就是一个空文档。
这里还拓展一个知识点,就是把文件保存为流文件,它的作用是用于网络传输,比如说用户请求下载一个Excel文档,你在服务器端处理完了之后不是保存到服务器的硬盘上,而是需要通过网络传输返回给用户。可能你暂时用不着这个功能,大概先有个印象吧,以后要是用到了再翻一下这里的代码:

  1. from temp file import NamedTemporaryFile
  2. from openpyxl import Workbook
  3. wb = Workbook()
  4. with NamedTemporaryFile() as tmp:
  5. wb.save(tmp.name)
  6. tmp.seek(0)
  7. stream = tmp.read()

6.2.3 打开工作簿
如果你需要打开一个已保存在硬盘上的文档,相当简单,openpyxl提供了load_workbook()函数用于打开文档,它有好几个参数,后面我再介绍一下这些参数,我们现在只要传入第一个参数就行,第一个参数是文件的路径,可以使用绝对路径也可以使用相对路径,当路径不存在时则报错,请自行决定是否需要捕获异常,代码如下:

  1. from openpyxl import load_workbook
  2. wb2 = load_workbook('./excel_ files/test.xlsx')

该分类下的相关小册推荐: