python脚本处理excel文件

devtools/2025/4/1 15:26:47/

1.对比perl和python

分别尝试用perl和python处理excel文件,发现perl的比较复杂,比如说read excel就有很多方式

Spreadsheet::Read

use Spreadsheet::ParseExcel

不同的method,对应的取sheet的cell方式也不一样。更复杂的是处理含有中文内容的Excel。用perl目前没有成功过。

对于python来说就比较简单,目前使用openpyxl库,处理起来清晰明了

2.python处理excel实例

下面给出一个python处理Excel的实例

python完成两个excel合并,要求如下:

1. 24xiaoxue.xlsx有A-G列,24zhongxue.xlsx有A-G列

2.用24zhongxue.xlsx的D列匹配24xiaoxue.xlsx的D列,如果有相同项,将24xiaoxue.xlsx相同项所在行添加到24zhongxue.xlsx行尾,并输出到新的excel

3.支持中文内容

编码声明需要放在文件的第一行或第二行,一般使用 # -*- coding: 编码格式 -*- 这种形式。常见的编码格式有 utf-8gbkgb2312 等。

python"># -*- coding: gb2312 -*- #for 中文支持
import openpyxl# 定义文件路径
file1 = '24zhongxue - 副本.xlsx'  # 小学文件
file2 = '24xiaoxue - 副本.xlsx' # 中学文件
#file1 = 'xxxx.xlsx'  # 小学文件
#file2 = 'xxxx.xlsx' # 中学文件
output_file = 'merged_result.xlsx' # 输出文件# 加载两个Excel文件
wb1 = openpyxl.load_workbook(file1)
wb2 = openpyxl.load_workbook(file2)# 获取第一个工作表
ws1 = wb1.active
ws2 = wb2.active# 创建一个新的工作簿用于保存结果
wb_result = openpyxl.Workbook()
ws_result = wb_result.active# 将24zhongxue.xlsx的标题行复制到新工作簿
for col in range(1, 8):  # A-G列for row in range(1,ws2.max_row+1):ws_result.cell(row=row, column=col).value = ws2.cell(row=row, column=col).value# 创建一个字典,用于存储24xiaoxue.xlsx中D列的值和对应的行
match_dict = {}
for row in range(1, ws1.max_row + 1):  # 从第1行开始key = ws1.cell(row=row, column=4).value  # D列的值if key:match_dict[key] = row# 遍历24zhongxue.xlsx的D列,查找匹配项
row_count = 1  # 新工作簿的行计数器
for row in range(1, ws2.max_row + 1):  # 从第1行开始key = ws2.cell(row=row, column=4).value  # D列的值if key and key in match_dict:# 如果找到匹配项,将24xiaoxue.xlsx中匹配的行复制到新工作簿matched_row = match_dict[key]for col in range(1, 8):  # A-G列ws_result.cell(row=row, column=col+10).value = ws1.cell(row=matched_row, column=col).valuerow_count += 1else:# 如果没有找到匹配项,将24zhongxue.xlsx的当前行复制到新工作簿#for couse Spreadsheet::ParseExcell in range(1, 8):  # A-G列#    ws_result.cell(row=row_count, column=col).value = ws2.cell(row=row, column=col).valuerow_count += 1# 保存结果到新的Excel文件
wb_result.save(output_file)print(f"合并完成,结果已保存到 {output_file}")


http://www.ppmy.cn/devtools/171516.html

相关文章

网络知识编-数据链路层(以太网 局域网通信 ARP协议 ARP 欺骗 DDos 攻击)

一、认识数据链路层 数据链路层位于物理层和网络层之间,其主要作用是将源自物理层的数据可靠地传输到相邻节点的目标主机的网络层。数据链路层通过物理介质(如以太网、Wi-Fi等)将数据分割成帧,并在相邻节点之间进行传输。其主要功…

Axios 和 跨域 这两个概念

1. Axios 是什么? Axios 是一个用于发送网络请求的工具,类似于浏览器自带的 fetch,但更强大、更易用。在前端(Vue)中,我们通常用 Axios 来向后端(Spring Boot)请求数据。 举个例子&…

Android Compose 层叠布局(ZStack、Surface)源码深度剖析(十三)

Android Compose 层叠布局(ZStack、Surface)源码深度剖析 一、引言 在 Android 应用开发领域,用户界面(UI)的设计与实现一直是至关重要的环节。随着技术的不断演进,Android Compose 作为一种全新的声明式…

vue2相关 基础命令

vue2 基础命令 vue简介,Vue 2 已于 2023 年 12 月 31 日停止维护。详见 Vue 2 终止支持 (EOL)。 安装完 Visual Studio Code后,打开项目目录, 在目录位置输入cmd,然后在命令行输入 code . 就可以在VScode打开项目。 公司的前后端…

线程控制与线程操作

目录 线程的创建 tid pthread_self() 线程的退出 pthread_join 传参问题和返回值问题 pthread_exit 线程取消 线程分离 我们来学习线程的控制与线程操作 线程的创建 我们之前在线程的概念中就讲过了,我们可以通过pthread_create来创建一个或者多个子线程…

第一天学爬虫

阅读提示:我今天才开始尝试爬虫,写的不好请见谅。 一、准备工具 requests库:发送HTTP请求并获取网页内容。BeautifulSoup库:解析HTML页面并提取数据。pandas库:保存抓取到的数据到CSV文件中。 二、爬取步骤 发送请求…

论文阅读:2023 arxiv Provable Robust Watermarking for AI-Generated Text

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Provable Robust Watermarking for AI-Generated Text https://arxiv.org/pdf/2306.17439 https://github.com/XuandongZhao/Unigram-Watermark https://www.doubao.com/chat/211092…

算法 | 麻雀搜索算法原理,公式,改进算法综述,应用场景及matlab完整代码

一、麻雀搜索算法(SSA)原理 1. 算法基础 麻雀搜索算法(Sparrow Search Algorithm, SSA)是2020年提出的一种群体智能优化算法,灵感来源于麻雀群体的觅食与反捕食行为。算法将麻雀分为三类角色:发现者(Producer):适应度最高,负责探索全局最优区域;加入者(Follower)…