使用Python批量处理Excel的内容

简单回顾一下上次的操作过程:

首先,我们创建了一个记事本新文件;然后,将ChatGPT提供的示例代码复制粘贴到了文件中;接着,保存文件并将文件名后缀改为了.py,并直接双击运行此文件;接下来,在打开的PyCharm工具中,我们尝试执行了脚本,主要报错是缺少对应的Python库和依赖关系。

图片

对于缺少的组件,我们在PyCharm的顶部菜单中,选择**“File”下的“Settings”打开设置对话框;然后选择“Project”下的“Project Interpreter”,单击项目解释器列表上方的 “+”按钮来添加新的Python包,在弹出的对话框中,搜索“pandas”“openpyxl”,单击“Install Package”**按钮,等待安装完成。

Pandas是一个用于数据分析的强大Python库,它提供了各种数据结构和数据操作工具,可以轻松地进行数据处理、清洗和分析等任务。它有一个依赖包,那就是openpyxl,主要用于读写Excel文件,有了openpyxl,我们就可以使用Pandas库来读取和比较Excel文件了。

最后,我们终于执行成功,读取到了Excel中的单元格数据。

图片

当然,在上个脚本中,我有点不满意的地方,那就是设置单元格的行号和列号有点不符合常规逻辑。

# 设置需要提取的单元格行号和列号row_index = 1col_index = 1

图片

当我们需要读取B2的数据时,需要将行号设置为1、列号设置为1。同时,输出的数据格式也稍微有点简单,今天我们来对脚本做一个简单升级。

我们可以使用cell_positions来选择多个不连续的单元格,像下面这样:

# 定义要提取的单元格位置cell_positions = {  'name': 'B2',  'phone': 'B3',  'address': 'B4',  'serv': 'B5'}

注意,这里的单元格可以使用我们所熟悉的单元格格式B2;不同单元格之间的逗号不能省略。

然后就是路径问题,Windows的中文环境中经常会包含一些特殊字符,比如汉字、数字或者空格等,经常会出现识别错误。

图片

这里我们用了一个1月份来命名文件夹,但是这里做了一个转义,转换成了特殊字符,导致操作系统无法正确解析文件路径,进而导致读取文件失败。

图片

虽然没有报错,但是我们可以看到它没有读到任何文件。

对于这类不合法的文件路径,可能是包含了Windows不支持的特殊字符或者非法字符,还有可能是路径名过长等原因。该问题一般有以下几种方法解决方案:

**1、修正文件路径:**检查您的文件路径是否包含了非法字符或者过长的路径名,如果有,将其修改为合法的路径;

**2、使用原始字符串表示法:**将文件路径使用原始字符串表示法(在字符串前面加上r或R)来避免转义字符和特殊字符的影响。

**3、使用os.path.join函数构造文件路径:**该函数会自动处理不同操作系统的路径分隔符,并确保生成的路径是合法的。

这里我是用了最常用的第2种解决方案,在在字符串前面加上r之后,检查就没有错误了。

图片

对于该目录下的子目录,我们可以使用os.walk()函数来遍历指定文件夹下的所有文件和子文件夹,并逐个读取Excel文件。这里可以直接指定,也可以使用前面通过folder_path定义的文件夹路径变量。

图片

最后,如果我们要将提取的内容保存到一个文本文件中,也可以使用Python的文件操作来打开指定文件并写入。

图片

在上面的代码中,我们首先使用with open()语句打开要写入的文件,并使用’w’参数将打开文件的模式指定为写入模式。然后,在遍历文件夹和读取Excel文件时,我们将提取的内容写入到该文件中。具体来说,我们在遍历每个Excel文件时,将文件路径和提取的值写入到文件中,并在每个Excel文件处理完后,在文件中添加一个空行。

最后,整合一下,我们就得到了完整的脚本。

import osimport openpyxl# 定义要提取的单元格位置cell_positions = {  'name': 'B2',  'phone': 'B3',  'address': 'B4',  'serv': 'B5'}# 定义要处理的文件夹路径folder_path = 'C:\python-test'# 打开文件,准备写入提取的内容with open(r'C:\python-test\result.txt', 'w', encoding='utf-8') as f:  # 遍历指定文件夹下的所有 Excel 文件  for root, dirs, files in os.walk(folder_path):    for filename in files:      # 仅处理 Excel 文件      if filename.endswith('.xlsx'):        file_path = os.path.join(root, filename)        print(f"正在处理文件: {file_path}")        # 打开 Excel 文件        workbook = openpyxl.load_workbook(file_path)        # 选择工作表        sheet = workbook.active        # 提取指定单元格的值        values = {}      for position in cell_positions:        cell = sheet[cell_positions[position]]        values[position] = cell.value      # 将提取的值写入文件      f.write(f"文件路径: {file_path}\n")      for key, value in values.items():        f.write(f"{key}: {value}\n")      f.write('\n')

运行看一下效果。

图片

因为print()函数中我们没有再显示结果数据,所以仅显示了文件信息。然后我们打开记事本文件看一下。

图片

OK,达到测试目的。

Python如何学习?

今天只要你给我的文章点赞,我私藏的Python学习资料一样免费共享给你们,来看看有哪些东西。

Python学习大礼包

在这里插入图片描述

Python入门到精通背记手册

在这里插入图片描述
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

👉CSDN大礼包:《python入门&进阶学习资源包》免费分享

Python安装包

在这里插入图片描述

Python爬虫秘籍

在这里插入图片描述

Python数据分析全套资源

在这里插入图片描述
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

👉CSDN大礼包:《python入门&进阶学习资源包》免费分享

Python实现办公自动化全套教程

在这里插入图片描述

Python面试集锦和简历模板

在这里插入图片描述
在这里插入图片描述

Python副业兼职路线

在这里插入图片描述

资料领取

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓

👉CSDN大礼包:《python入门&进阶学习资源包》免费分享

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值