python脚本处理excel文件

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).value
        row_count += 1
    else:
        # 如果没有找到匹配项,将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).value
        row_count += 1

# 保存结果到新的Excel文件
wb_result.save(output_file)

print(f"合并完成,结果已保存到 {output_file}")
相关推荐
冷雨夜中漫步7 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴8 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再8 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
喵手10 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控
2501_9449347310 小时前
高职大数据技术专业,CDA和Python认证优先考哪个?
大数据·开发语言·python
helloworldandy10 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
肖永威11 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ11 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha12 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy12 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法