使用Python批量处理Excel的内容
正文共:1500 字 10 图,预估阅读时间:1 分钟
在前面的文章中(如何使用Python提取Excel中固定单元格的内容),我们介绍了如何安装Python环境和PyCharm工具,还利用搭好的环境简单测试了一下ChatGPT提供的脚本程序。
简单回顾一下上次的操作过程:
首先,我们创建了一个记事本新文件;然后,将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 = 1
col_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 os
import 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提取Excel中固定单元格的内容
配置openVPN使用用户名密码认证
解决openVPN的递归路问题还是要从服务器端下手
openVPN客户端连接指南
Ubuntu系统如何连接或断开openVPN
在SD-WAN网络中应用OpenVPN,chatGPT是这样想的
基于CentOS部署SmartDNS
chatGPT又火了,用openAI写文章到底靠不靠谱?
DDNS配置详解
DDNS如何应用到SD-WAN网络中?
家庭宽带的公网IPv4地址到底封了多少端口?
用SNMP模仿Zabbix读取设备接口流量
CentOS 7多网卡配置(最小化安装)
相关文章:

使用Python批量处理Excel的内容
正文共:1500 字 10 图,预估阅读时间:1 分钟 在前面的文章中(如何使用Python提取Excel中固定单元格的内容),我们介绍了如何安装Python环境和PyCharm工具,还利用搭好的环境简单测试了一下ChatGPT提…...

k8s+pv+pvc+nas 数据持久化volumes使用
1 k8s pod申请持久化卷配置 apiVersion: v1 kind: Service metadata:name: $IMG_NAMEnamespace: rz-dtlabels:app: $IMG_NAME spec:type: NodePortports:- port: 8091nodePort: 31082 #service对外开放端口selector:app: $IMG_NAME --- apiVersion: apps/v1 kind: Deployment …...
C++算法-青蛙跳台阶【面试】
"青蛙跳台阶"问题是一个经典的递归问题,也与斐波那契数列有关。问题是这样的:一只青蛙站在一个n阶台阶上,它每次可以跳1阶或2阶,问青蛙跳到顶端总共有多少种跳法。 这个问题可以用递归或动态规划来解决。以下是使用C实…...
px转rem插件postcss-plugin-px2rem使用方法(浏览器缩放页面自适应)
px转rem插件postcss-plugin-px2rem使用方法(浏览器缩放页面自适应) 1. 常见屏幕自适应的布局 百分比布局rem布局css媒体查询在前端框架设计初期,应优先选择好页面布局方式 2. postcss-plugin-px2rem插件的使用 官网地址:https…...

批量文件重命名技巧:轻松替换删除文件夹名中的字母,实现高效文件管理新境界
在数字化时代,我们每天都会面对大量的文件和文件夹。无论是工作文档、学习资料还是个人收藏,文件命名的规范性都显得尤为重要。然而,手动一个一个去修改文件名,不仅耗时耗力,还容易出错。那么,有没有一种方…...
windows设备/路由设备上ip地址如何查看、使用
在Windows设备上查看本地IP地址(IPv4和IPv6): 使用命令提示符: 打开命令提示符(在Windows中按Win R,然后输入"cmd"并按Enter)。在命令提示符窗口中,输入以下命令以查看…...

服务端⾼并发分布式结构演进之路
在进行技术学习过程中,由于大部分读者没有经历过一些中大型系统的实际经验,导致无法从全局理解一些概念,所以本文以一个"电子商务"应用为例,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举…...

Stable Diffusion ProtoVisionXL大模型之艺术盛宴!
今天基于ProtoVisionXL这款大模型为大家呈现一些视觉上的艺术盛宴,视觉冲击宣传海报信手拈来,再配上你的宣传语,妥妥地让人眼前一亮。 实测参数: 分辨率:768*1024 采样方法 (Sampler):DPM 2M Karras 迭代步数 (Ste…...

浅谈golang字符编码
1、 Golang 字符编码 Golang 的代码是由 Unicode 字符组成的,并由 Unicode 编码规范中的 UTF-8 编码格式进行编码并存储。 Unicode 是编码字符集,囊括了当今世界使用的全部语言和符号的字符。有三种编码形式:UTF-8,UTF-16&#…...

Vite和Webpack的区别是什么,你站队谁?
Vite和Webpack有很多相同之处,也有区别,很多老铁分不清,贝格前端工场借助此文为大家详细介绍一下。 一、关于Vite和Webpack Vite和Webpack都是前端开发中常用的构建工具,用于将源代码转换为可在浏览器中运行的静态资源。它们在一…...

【微信小程序】事件传参的两种方式
文章目录 1.什么是事件传参2.data-*方式传参3.mark自定义数据 1.什么是事件传参 事件传参:在触发事件时,将一些数据作为参数传递给事件处理函数的过程,就是事件传参 在微信小程序中,我们经常会在组件上添加一些自定义数据,然后在…...
前端针对需要递增的固定数据
这里递增的是1到12 data(){return{cycleOptions:Array.from({ length: 12 }, (v, k) > ({value: k 1,label: String(k 1)})),} }<el-select v-model"ruleForm.monthLength" placeholder"请选择周期数量"><el-optionv-for"item in cycle…...

红酒保存中的氧气管理:适度接触与避免过度氧化
在保存云仓酒庄雷盛红酒的过程中,我们不得不面对一个微妙的问题:氧气管理。氧气,这个我们生活中无处不在的气体,对于红酒的保存却有着至关重要的影响。适度接触氧气对红酒的陈年过程和品质维护具有积极作用,然而过度氧…...

从零开始搭建开源智慧城市项目(三)上升线效果
前言 上一节实现了添加建筑物线框,模型外墙和道路地面材质添加。这一节准备通过简单的shader实现上升线效果。 思路 简单的说一下思路,通过获取模型顶点坐标所在的高度Z来进行筛选,高度再某一区间内设置成上升线的颜色,其余高度…...

unity基础(五)地形详解
目录 一 创建地形 二 调整地形大小 三 创建相邻地形 四 创建山峰 五 创建树木 七 添加风 八 添加水 简介: Unity 中的基础地形是构建虚拟场景的重要元素之一。 它提供了一种直观且灵活的方式来创建各种地形地貌,如山脉、平原、山谷等。 通过 Unity 的地形…...
postman接口测试工具详解
Postman 是一个功能强大的 API 开发和测试工具,广泛应用于开发人员和测试人员进行 API 的调试、测试、文档生成等工作。以下是对 Postman 的详细介绍。 1. 功能概览 1.1 请求构建 请求类型: 支持 GET、POST、PUT、DELETE、PATCH、OPTIONS 等多种 HTTP 方法。URL …...
2024年护网行动全国各地面试题汇总(3)作者:————LJS
应急响应基本思路和流程 收集信息:收集客户信息和中毒主机信息,包括样本判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS 等等抑制范围:隔离使受害⾯不继续扩⼤深入分析:日志分…...
计算机专业的学生要达到什么水平才能进入大厂工作?越早知道越好
计算机专业的学生要达到什么水平才能进入BAT等大厂工作?越早知道越好. 一、算法题 各大公司笔试、面试基本都考这个,别的不说,《剑指Offer》所有题目背下来,Leetcode高频题目刷个一两百遍,搞过ACM也可以,…...
巡检费时费力?试试AI自动巡检
随着企业IT规模不断增长,设备、系统越来越多,运维工作压力也与日俱增。保障设备、系统健康稳定地运行,日常巡检是运维工作不可或缺的部分。通过巡检可以及时发现设备、系统的异常问题,提前预防及时处理,避免问题扩大产…...

46-4 等级保护 - 网络安全等级保护概述
一、网络安全等级保护概述 原文:没有网络安全就没有国家安全 二、网络安全法 - 安全立法 中华人民共和国主席令 第五十三号 《中华人民共和国网络安全法》已于2016年11月7日由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议通过,并自2017年6月1日起正式…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...