Python分享20个Excel自动化脚本

在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式。通过Python,我们可以实现对Excel文件的各种自动化操作,提高工作效率。

本文将分享20个实用的Excel自动化脚本,以帮助新手小白更轻松地掌握这些技能。

1. Excel单元格批量填充

import pandas as pd  # 批量填充指定列的单元格  
def fill_column(file_path, column_name, value):  df = pd.read_excel(file_path)  df[column_name] = value  # 将指定列的所有单元格填充为value  df.to_excel(file_path, index=False)  fill_column('example.xlsx', '备注', '已处理')  
print("备注列已成功填充!")

解释

此脚本将example.xlsx中的“备注”列全部填充为“已处理”。对于普通用户来说,处理大量数据时常需要对某一列进行统一标记,这个功能就显得尤为重要。

2. 设置行高与列宽

from openpyxl import load_workbook  # 设置Excel的行高与列宽  
def set_row_column_size(file_path):  wb = load_workbook(file_path)  ws = wb.active  # 设置第一行行高、第一列列宽  ws.row_dimensions[1].height = 30  # 设置行高  ws.column_dimensions['A'].width = 20  # 设置列宽  wb.save(file_path)  set_row_column_size('example.xlsx')  
print("行高和列宽设置成功!")

解释

这个脚本为Excel文件设置了第一行的行高和第一列的列宽。适当调整行高和列宽可以提高表格的可读性,尤其是在内容较多或较复杂时,使用此功能可以使报告更加美观易读。

3. 根据条件删除行

# 根据条件删除Excel中的行  
def delete_rows_based_on_condition(file_path, column_name, condition):  df = pd.read_excel(file_path)  df = df[df[column_name] != condition]  # 删除满足条件的行  df.to_excel(file_path, index=False)  delete_rows_based_on_condition('example.xlsx', '状态', '无效')  
print("符合条件的行已删除!")

解释

该脚本从Excel中删除“状态”列中值为“无效”的行。这种操作在数据清理过程中非常常见,有助于减少数据集中的噪声,提高数据分析的准确性。

4. 创建新的Excel工作表

# 在现有Excel文件中创建新的工作表  
def create_new_sheet(file_path, sheet_name):  wb = load_workbook(file_path)  wb.create_sheet(title=sheet_name)  # 创建新的工作表  wb.save(file_path)  create_new_sheet('example.xlsx', '新工作表')  
print("新工作表创建成功!")

解释

该脚本在已有的Excel文件中创建一个新的工作表。这对于组织数据,分开不同任务或项目的数据非常有用,保持文件结构的清晰。

5. 导入CSV文件到Excel

# 将CSV文件导入到Excel工作表  
def import_csv_to_excel(csv_file, excel_file):  df = pd.read_csv(csv_file)  df.to_excel(excel_file, index=False)  import_csv_to_excel('data.csv', 'imported_data.xlsx')  
print("CSV文件成功导入到Excel!")

解释

这个脚本将CSV文件导入到Excel中。很多时候,数据是以CSV格式提供的,通过该脚本可以方便地将其转换为Excel格式,便于后续分析和处理。

6. 数据透视表生成

# 生成数据透视表并保存到新的Excel文件  
def generate_pivot_table(file_path, index_column, values_column, output_file):  df = pd.read_excel(file_path)  pivot_table = df.pivot_table(index=index_column, values=values_column, aggfunc='sum')  # 汇总  pivot_table.to_excel(output_file)  generate_pivot_table('sales_data.xlsx', '地区', '销售额', 'pivot_output.xlsx')  
print("透视表生成成功!")

解释

该脚本根据给定的“地区”和“销售额”列生成汇总透视表,并保存到新文件中。在进行业务分析时,透视表能快速展示不同维度下的数据总结。

7. 格式化Excel

from openpyxl.styles import Font, Color  # 设置Excel单元格字体样式  
def format_cells(file_path):  wb = load_workbook(file_path)  ws = wb.active  for cell in ws['A']:  # 遍历A列  cell.font = Font(bold=True, color="FF0000")  # 设置字体加粗和红色  wb.save(file_path)  format_cells('example.xlsx')  
print("单元格格式化成功!")

解释

该脚本将example.xlsx中的A列字体设置为加粗和红色。这种格式化通常用于强调特定数据,使报告更具视觉吸引力。

8. 分析并输出描述性统计

# 输出描述性统计到Excel  
def descriptive_statistics(file_path, output_file):  df = pd.read_excel(file_path)  stats = df.describe()  # 计算描述性统计  stats.to_excel(output_file)  descriptive_statistics('example.xlsx', 'statistics_output.xlsx')  
print("描述性统计输出成功!")

解释

该脚本计算Excel文件的描述性统计信息(如均值、标准差等),并将结果保存到新的Excel文件中。这对于了解数据的基本特征非常重要,尤其在数据分析前期阶段。

9. 批量修改Excel文件名称

import os  # 批量重命名指定目录下的Excel文件  
def rename_excel_files(directory, prefix):  for filename in os.listdir(directory):  if filename.endswith('.xlsx'):  new_name = f"{prefix}_{filename}"  os.rename(os.path.join(directory, filename), os.path.join(directory, new_name))  print(f"已将 {filename} 重命名为 {new_name}")  rename_excel_files('/path/to/excel/files', '2024')

解释

该脚本批量重命名指定目录中的所有Excel文件,在每个文件名前面添加一个前缀。对于需要处理大量Excel文件的用户来说,这种批量操作非常便利,比如根据年份或项目为文件命名,以便于管理和归档。

10. 自动发送包含Excel数据的电子邮件

import smtplib  
from email.mime.multipart import MIMEMultipart  
from email.mime.application import MIMEApplication  
from email.mime.text import MIMEText  # 自动发送带有Excel附件的电子邮件  
def send_email(to_address, subject, body, excel_file):  from_address = "your_email@example.com"  password = "your_password"  msg = MIMEMultipart()  msg['From'] = from_address  msg['To'] = to_address  msg['Subject'] = subject  # 添加正文  msg.attach(MIMEText(body, 'plain'))  # 添加Excel附件  with open(excel_file, "rb") as attachment:  part = MIMEApplication(attachment.read(), Name=os.path.basename(excel_file))  part['Content-Disposition'] = f'attachment; filename="{os.path.basename(excel_file)}"'  msg.attach(part)  # 发送邮件  with smtplib.SMTP('smtp.example.com', 587) as server:  server.starttls()  server.login(from_address, password)  server.send_message(msg)  send_email('recipient@example.com', 'Monthly Report', 'Please find attached the monthly report.', 'report.xlsx')  
print("邮件发送成功!")

解释

此脚本使用SMTP协议自动发送一封电子邮件,其中附带了一个Excel文件。这个功能在工作中尤其有用,比如每月定期发送财务报表或业绩报告给相关人员。通过自动化邮件发送,可以节省时间并减少人为错误。

11. 合并多个Excel文件

import pandas as pd
import osdef merge_excel_files(folder_path, output_file):all_data = pd.DataFrame()for filename in os.listdir(folder_path):if filename.endswith('.xlsx'):file_path = os.path.join(folder_path, filename)df = pd.read_excel(file_path)all_data = pd.concat([all_data, df], ignore_index=True)all_data.to_excel(output_file, index=False)merge_excel_files('your_folder_path', 'merged_file.xlsx')
print("多个Excel文件合并成功!")

解释

该脚本将指定文件夹下的所有Excel文件合并成一个文件。在处理分散在多个文件中的数据时,这个功能可以将数据整合在一起,方便后续的统一分析。

12. 拆分Excel文件

import pandas as pddef split_excel_file(file_path, column_name, output_folder):df = pd.read_excel(file_path)unique_values = df[column_name].unique()for value in unique_values:sub_df = df[df[column_name] == value]output_file = os.path.join(output_folder, f'{value}.xlsx')sub_df.to_excel(output_file, index=False)split_excel_file('example.xlsx', '部门', 'output_folder')
print("Excel文件拆分成功!")

解释

此脚本根据指定列的唯一值将Excel文件拆分成多个文件。例如,按照“部门”列将数据拆分成不同部门对应的文件,便于各部门独立查看和处理自己的数据。

13. 替换单元格内容

import pandas as pddef replace_cell_content(file_path, column_name, old_value, new_value):df = pd.read_excel(file_path)df[column_name] = df[column_name].replace(old_value, new_value)df.to_excel(file_path, index=False)replace_cell_content('example.xlsx', '产品名称', '旧产品', '新产品')
print("单元格内容替换成功!")

解释

该脚本将指定列中的特定内容替换为新的内容。在数据修正或更新时,这个功能可以快速修改数据中的错误或过时信息。

14. 对数据进行排序

import pandas as pddef sort_excel_data(file_path, column_name, ascending=True):df = pd.read_excel(file_path)df = df.sort_values(by=column_name, ascending=ascending)df.to_excel(file_path, index=False)sort_excel_data('example.xlsx', '销售额', ascending=False)
print("数据排序成功!")

解释

这个脚本的主要功能是对 Excel 文件中的数据根据指定列进行排序操作,并且可以选择升序或降序排列,最后将排序后的数据保存回原 Excel 文件。排序操作在数据处理和分析中非常常见,例如按照销售额对销售数据进行降序排序,能快速找出销售额高的记录。

15. 统计特定列的唯一值数量

import pandas as pddef count_unique_values(file_path, column_name):df = pd.read_excel(file_path)unique_count = df[column_name].nunique()print(f"{column_name}列的唯一值数量为: {unique_count}")count_unique_values('example.xlsx', '客户编号')

解释

该脚本用于统计Excel文件中指定列的唯一值数量。在数据分析中,了解某列有多少不同的值可以帮助我们快速掌握数据的分布情况,例如统计客户编号的唯一值数量可以知道有多少不同的客户。

16. 提取指定列到新的Excel文件

import pandas as pddef extract_columns(file_path, columns, output_file):df = pd.read_excel(file_path)new_df = df[columns]new_df.to_excel(output_file, index=False)extract_columns('example.xlsx', ['姓名', '年龄'], 'extracted_columns.xlsx')
print("指定列提取成功!")

解释

此脚本可以从一个Excel文件中提取指定的列,并保存到一个新的Excel文件中。当我们只需要数据中的部分信息时,使用这个脚本可以快速筛选出所需的数据,避免处理大量无关信息。

17. 为Excel表格添加边框

from openpyxl import load_workbook
from openpyxl.styles import Border, Sidedef add_border_to_excel(file_path):wb = load_workbook(file_path)ws = wb.activethin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))for row in ws.iter_rows():for cell in row:cell.border = thin_borderwb.save(file_path)add_border_to_excel('example.xlsx')
print("表格边框添加成功!")

解释

该脚本为Excel表格中的每个单元格添加了细边框。添加边框可以使表格更加清晰易读,特别是在打印或展示数据时,能够提升表格的美观度和专业性。

18. 检查Excel文件中是否存在空行并删除

import pandas as pddef remove_empty_rows(file_path):df = pd.read_excel(file_path)df = df.dropna(how='all')df.to_excel(file_path, index=False)remove_empty_rows('example.xlsx')
print("空行删除成功!")

解释

此脚本用于检查Excel文件中是否存在所有列都为空的行,并将这些空行删除。空行可能会影响数据处理和分析的结果,通过删除空行可以保证数据的完整性和准确性。

19. 根据多列条件筛选数据

import pandas as pddef filter_data_by_multiple_conditions(file_path, conditions, output_file):df = pd.read_excel(file_path)query_str = ' & '.join([f'{col} {op} {val}' for col, op, val in conditions])filtered_df = df.query(query_str)filtered_df.to_excel(output_file, index=False)# 示例条件:年龄大于25且性别为女
conditions = [('年龄', '>', 25), ('性别', '==', "'女'")]
filter_data_by_multiple_conditions('example.xlsx', conditions, 'filtered_data.xlsx')
print("多条件筛选数据成功!")

解释

该脚本可以根据多个列的条件对Excel数据进行筛选,并将筛选结果保存到新的文件中。在实际数据分析中,我们常常需要根据多个条件来筛选出符合要求的数据,使用这个脚本可以方便地实现多条件筛选。

20. 对Excel中的日期列进行格式化

import pandas as pddef format_date_column(file_path, column_name, date_format):df = pd.read_excel(file_path)df[column_name] = pd.to_datetime(df[column_name]).dt.strftime(date_format)df.to_excel(file_path, index=False)format_date_column('example.xlsx', '日期', '%Y-%m-%d')
print("日期列格式化成功!")

解释

此脚本用于对Excel文件中指定的日期列进行格式化。在处理日期数据时,不同的业务需求可能需要不同的日期格式,通过这个脚本可以将日期列转换为我们需要的格式,方便后续的数据分析和展示。

希望这些Excel自动化脚本能够进一步帮助你提高工作效率,更好地掌握Python在Excel数据处理方面的应用!如果你在实践过程中有任何疑问,欢迎随时交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/69393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用requestAnimationFrame减少浏览器重绘

文章目录 介绍使用使用rAF前使用rAF后 介绍 在屏幕中,浏览器通常都以60FPS(1/60 s)每帧更新屏幕,但是当前端绑定了一些高频事件,如鼠标移动,屏幕滚动、触摸滑动等时,在一帧的周期内,…

Android的MQTT客户端实现

在 Android 平台上实现 MQTT 客户端的完整技术方案,涵盖基础实现、安全连接、性能优化和最佳实践: 一、技术选型与依赖配置 推荐库 Eclipse Paho Android Service(官方维护,支持后台运行) gradle 复制 // build.gradl…

SQL LEFT JOIN 详解

SQL LEFT JOIN 详解 引言 在SQL数据库查询中,LEFT JOIN 是一种强大的联接操作符,它允许我们从两个或多个表中检索数据。本文将详细介绍 LEFT JOIN 的概念、用法以及在实际应用中的注意事项。 一、什么是 LEFT JOIN? LEFT JOIN 是一种 SQL 联接操作符,用于返回左表(Lef…

理解UML中的四种关系:依赖、关联、泛化和实现

在软件工程中,统一建模语言(UML)是一种广泛使用的工具,用于可视化、设计、构造和文档化软件系统。UML提供了多种图表类型,如类图、用例图、序列图等,帮助开发者和设计师更好地理解系统的结构和行为。在UML中…

es match 可查 而 term 查不到 问题分析

版本信息 elasticsearch-8.13.0 es 匹配逻辑 根本:es 的匹配是基于token 的。检索的query和目标字段在token 层级上有交集才能检索成功。对同样的文本,使用不同的分词器,所得token 不同。es 默认的analyzer(分词器)是standard模式&#xf…

如何通过Deepseek的API进行开发和使用(适合开发者和小白的学习使用教程)

目录 一,API创建与获取 二,直接进行API的调用 2.1 安装第三方库 2.2 官方支持的接口调用方式 2.3 编写的小tips 2.4 AI助手工具代码 三, 配置方面的说明 3.1 token价格和字符用量 3.2 响应错误码 最近在休息的时候也是一直会刷到关于deepseek,简单使用了一下,发现这…

C#+halcon机器视觉九点标定算法

在机器视觉中,九点标定(也称为九点标定法)是一种常用的方法,用于将图像坐标系与物理坐标系进行映射。通过标定,可以将图像中的像素坐标转换为实际物理坐标,或者反之。下面是一个使用C#和Halcon进行九点标定…

Stream API 进阶:筛选、映射、查找、归约

文章目录 1. 引言 (Introduction)2. 筛选和切片 (Filtering and Slicing)2.1 使用谓词筛选 filter2.2 筛选各异的元素 distinct2.3 截短流 limit2.4 跳过元素 skip 3. 映射 (Mapping)3.1 对流中每一个元素应用函数 map3.2 流的扁平化 flatMap 4. 查找和匹配 (Finding and Match…

使用scoop 下载速度慢怎么办

在国内使用 Scoop 下载速度慢是一个常见问题,主要是因为 Scoop 默认的软件源(bucket)和下载服务器通常位于国外。以下是一些提高下载速度的方法: 1. 更换 Scoop 镜像源(Bucket 镜像): 原理&…

unity学习33:角色相关2,碰撞检测,collider 和 rigidbody,测试一个简单碰撞爆炸效果

目录 1 给gameObject添加rigidbody 2 rigidbody的属性 2.1 基础属性 2.2 插值 详细 2.3 碰撞检测 2.4 constraints 冻结坐标轴的移动和旋转 2.5 layer Overrides 3 碰撞检测 collision Detection 3.1 每个gameObeject上都会创建时自带一个 Collider 3.2 Collider的绿…

DeepSeek-V3:开源多模态大模型的突破与未来

目录 引言 一、DeepSeek-V3 的概述 1.1 什么是 DeepSeek-V3? 1.2 DeepSeek-V3 的定位 二、DeepSeek-V3 的核心特性 2.1 多模态能力 2.2 开源与可扩展性 2.3 高性能与高效训练 2.4 多语言支持 2.5 安全与伦理 三、DeepSeek-V3 的技术架构 3.1 模型架构 3…

警告accumulate and all-reduce gradients in fp32 for bfloat16 data type

这条警告信息是关于分布式训练中的通信优化策略的,具体涉及流水线并行(Pipeline Parallelism)和点对点通信(P2P Communication)。以下是对这条警告的详细解释: ### **警告内容** WARNING: Setting args.o…

【生成模型之十四】Visual Autoregressive Modeling

论文:Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction code:GitHub - FoundationVision/VAR: [NeurIPS 2024 Best Paper][GPT beats diffusion🔥] [scaling laws in visual generation📈]…

硬核技术:小程序能够调用手机的哪些传感器

一、加速度传感器 小程序可以调用手机的加速度传感器来检测设备的运动状态。加速度传感器能够测量设备在三个轴(X、Y、Z)上的加速度变化。通过分析这些数据,小程序可以实现一些功能,如运动检测、步数统计、游戏中的动作感应等。 健…

修剪二叉搜索树(力扣669)

这道题还是比较复杂,在递归上与之前写过的二叉树的题目都有所不同。如果当前递归到的子树的父节点不在范围中,我们根据节点数值的大小选择进行左递归还是右递归。为什么找到了不满足要求的节点之后,还要进行递归呢?因为该不满足要…

活动预告 |【Part 2】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁

课程介绍 通过 Microsoft Learn 免费参加 Microsoft 安全在线技术公开课,掌握创造新机遇所需的技能,加快对 Microsoft Cloud 技术的了解。参加我们举办的“通过扩展检测和响应抵御威胁”技术公开课活动,了解如何更好地在 Microsoft 365 Defen…

【WB 深度学习实验管理】利用 Hugging Face 实现高效的自然语言处理实验跟踪与可视化

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到,别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在自然语言处理领域,使用Hugging Face的Transformers库进行模型训练已经成为主流。然而,随着模型复…

创建一个javaWeb Project

文章目录 前言一、eclipse创建web工程二、web.xmlservlet.xml< mvc:annotation-driven/ > Spring MVC 驱动< context:component - scan >&#xff1a;扫描< bean > ... < /bean >< import > config/beans.xml beans.xmlmybatis.xml 前言 javaWe…

【蓝桥杯—单片机】第十一届省赛真题代码题解题笔记 | 省赛 | 真题 | 代码题 | 刷题 | 笔记

第十一届省赛真题代码部分 前言赛题代码思路笔记竞赛板配置内部振荡器频率设定键盘工作模式跳线扩展方式跳线 建立模板明确设计要求和初始状态显示功能部分数据界面第一部分第二部分第三部分调试时发现的问题 参数设置界面第一部分第二部分和第四部分第三部分和第五部分 按键功…

寒假2.7

题解 web&#xff1a;[HCTF 2018]WarmUp 打开是张表情包 看一下源代码 访问source.php&#xff0c;得到完整代码 代码审计 <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.p…