当前位置:  首页>> 技术小册>> python与ChatGPT让excel高效办公(下)

案例01 提取文件夹中所有工作簿的文件名

在现代办公环境中,处理大量Excel工作簿是一项常见且重要的任务。尤其是在数据分析、财务管理或项目管理等领域,经常需要从多个工作簿中汇总数据或执行批量操作。然而,手动打开每个文件并记录下文件名不仅效率低下,还容易出错。幸运的是,通过结合Python的强大功能和ChatGPT等AI工具的辅助,我们可以自动化这一过程,显著提高工作效率。本案例将详细介绍如何使用Python脚本来提取指定文件夹中所有Excel工作簿(假设以.xlsx.xls为扩展名)的文件名,并展示了如何将这些文件名保存到一个新的Excel工作簿中,以便于后续分析或引用。

一、环境准备

在开始编写代码之前,请确保你的计算机上已安装Python环境以及必要的库。对于本案例,我们将主要使用os模块来处理文件和目录路径,以及openpyxl(或xlwt,如果你需要处理.xls格式的文件)来操作Excel文件。如果你尚未安装这些库,可以通过pip命令进行安装:

  1. pip install openpyxl
  2. # 如果需要处理.xls文件,则安装xlrd(仅用于读取)和xlwt(用于写入)
  3. # pip install xlrd xlwt

二、编写Python脚本

接下来,我们将编写一个Python脚本来实现我们的目标。这个脚本将遍历指定文件夹中的所有文件,检查它们是否为Excel工作簿(即扩展名为.xlsx.xls),并将这些文件名收集起来,最后将这些文件名写入一个新的Excel文件中。

  1. import os
  2. from openpyxl import Workbook
  3. def extract_excel_filenames(folder_path, output_file):
  4. """
  5. 从指定文件夹中提取所有Excel工作簿的文件名,并将它们保存到一个新的Excel文件中。
  6. :param folder_path: 包含Excel文件的文件夹路径
  7. :param output_file: 保存文件名列表的Excel文件路径
  8. """
  9. # 创建一个新的Excel工作簿
  10. wb = Workbook()
  11. ws = wb.active
  12. ws.title = "Excel File Names"
  13. # 遍历文件夹中的所有文件
  14. for root, dirs, files in os.walk(folder_path):
  15. for file in files:
  16. # 检查文件扩展名是否为.xlsx或.xls
  17. if file.endswith(('.xlsx', '.xls')):
  18. # 构造完整文件路径(可选,用于调试)
  19. full_path = os.path.join(root, file)
  20. # 将文件名添加到Excel文件中
  21. ws.append([file])
  22. # 保存Excel文件
  23. wb.save(output_file)
  24. print(f"Excel文件名已保存到 {output_file}")
  25. # 使用示例
  26. folder_to_scan = 'C:/path/to/your/excel/files' # 修改为你的文件夹路径
  27. output_excel_file = 'C:/path/to/your/output/excel_filenames.xlsx' # 修改为你的输出文件路径
  28. extract_excel_filenames(folder_to_scan, output_excel_file)

三、代码解析

  1. 导入模块:首先,我们导入了os模块用于文件和目录操作,以及openpyxlWorkbook类用于创建和保存Excel文件。

  2. 定义函数extract_excel_filenames函数接受两个参数:folder_path(要扫描的文件夹路径)和output_file(保存文件名列表的Excel文件路径)。

  3. 创建Excel工作簿:使用openpyxl.Workbook()创建一个新的Excel工作簿,并获取活动工作表(默认为第一个工作表),设置其标题为“Excel File Names”。

  4. 遍历文件夹:通过os.walk()遍历指定文件夹及其所有子文件夹。对于每个文件,检查其扩展名是否为.xlsx.xls

  5. 收集文件名:如果文件是Excel工作簿,则将其文件名添加到Excel工作表的下一行中。这里使用了ws.append([file])来添加数据,其中file是一个包含单个元素的列表,即文件名。

  6. 保存Excel文件:最后,使用wb.save(output_file)将包含所有Excel文件名的工作簿保存到指定路径。

四、扩展与优化

  1. 错误处理:在实际应用中,添加错误处理机制(如try-except块)以捕获并处理可能出现的异常(如文件夹不存在、权限不足等)是非常重要的。

  2. 递归与非递归:虽然本例中使用了os.walk()以递归方式遍历文件夹,但在某些情况下,你可能只想处理指定文件夹中的文件而不包括子文件夹。这时,可以直接遍历os.listdir(folder_path)获取的文件列表。

  3. 文件筛选:根据需求,你可能还希望根据其他条件(如文件名中包含特定关键字)来筛选Excel文件。这可以通过在添加文件名到Excel之前添加额外的条件检查来实现。

  4. 性能优化:对于包含大量文件的文件夹,遍历和文件检查操作可能会比较耗时。在这种情况下,考虑使用多线程或多进程来加速处理过程。

  5. 图形用户界面(GUI):为了进一步提高用户体验,可以考虑使用Tkinter、PyQt等Python GUI库来创建一个简单的图形界面,让用户能够选择文件夹和指定输出文件路径,而无需手动修改脚本中的硬编码路径。

通过上述步骤,你已经能够编写一个Python脚本来自动化提取文件夹中所有Excel工作簿的文件名,并将其保存到新的Excel文件中。这一技能对于处理大量Excel文件的工作流程来说是非常有价值的,能够显著提升工作效率和准确性。