Python分享20个Excel自动化脚本

麻花痒  论坛元老 | 2025-2-12 15:26:21 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1042|帖子 1042|积分 3126

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在数据处理和分析的过程中,Excel文件是我们一样寻常工作中常见的格式。通过Python,我们可以实现对Excel文件的各种自动化操作,进步工作服从。

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



1. Excel单元格批量添补

  1. import pandas as pd  
  2. # 批量填充指定列的单元格  
  3. def fill_column(file_path, column_name, value):  
  4.     df = pd.read_excel(file_path)  
  5.     df[column_name] = value  # 将指定列的所有单元格填充为value  
  6.     df.to_excel(file_path, index=False)  
  7. fill_column('example.xlsx', '备注', '已处理')  
  8. print("备注列已成功填充!")
复制代码
解释

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


2. 设置行高与列宽

  1. from openpyxl import load_workbook  
  2. # 设置Excel的行高与列宽  
  3. def set_row_column_size(file_path):  
  4.     wb = load_workbook(file_path)  
  5.     ws = wb.active  
  6.     # 设置第一行行高、第一列列宽  
  7.     ws.row_dimensions[1].height = 30  # 设置行高  
  8.     ws.column_dimensions['A'].width = 20  # 设置列宽  
  9.     wb.save(file_path)  
  10. set_row_column_size('example.xlsx')  
  11. print("行高和列宽设置成功!")
复制代码
解释

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


3. 根据条件删除行

  1. # 根据条件删除Excel中的行  
  2. def delete_rows_based_on_condition(file_path, column_name, condition):  
  3.     df = pd.read_excel(file_path)  
  4.     df = df[df[column_name] != condition]  # 删除满足条件的行  
  5.     df.to_excel(file_path, index=False)  
  6. delete_rows_based_on_condition('example.xlsx', '状态', '无效')  
  7. print("符合条件的行已删除!")
复制代码
解释

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


4. 创建新的Excel工作表

  1. # 在现有Excel文件中创建新的工作表  
  2. def create_new_sheet(file_path, sheet_name):  
  3.     wb = load_workbook(file_path)  
  4.     wb.create_sheet(title=sheet_name)  # 创建新的工作表  
  5.     wb.save(file_path)  
  6. create_new_sheet('example.xlsx', '新工作表')  
  7. print("新工作表创建成功!")
复制代码
解释

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


5. 导入CSV文件到Excel

  1. # 将CSV文件导入到Excel工作表  
  2. def import_csv_to_excel(csv_file, excel_file):  
  3.     df = pd.read_csv(csv_file)  
  4.     df.to_excel(excel_file, index=False)  
  5. import_csv_to_excel('data.csv', 'imported_data.xlsx')  
  6. print("CSV文件成功导入到Excel!")
复制代码
解释

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


6. 数据透视表生成

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

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


7. 格式化Excel

  1. from openpyxl.styles import Font, Color  
  2. # 设置Excel单元格字体样式  
  3. def format_cells(file_path):  
  4.     wb = load_workbook(file_path)  
  5.     ws = wb.active  
  6.     for cell in ws['A']:  # 遍历A列  
  7.         cell.font = Font(bold=True, color="FF0000")  # 设置字体加粗和红色  
  8.     wb.save(file_path)  
  9. format_cells('example.xlsx')  
  10. print("单元格格式化成功!")
复制代码
解释

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


8. 分析并输出形貌性统计

  1. # 输出描述性统计到Excel  
  2. def descriptive_statistics(file_path, output_file):  
  3.     df = pd.read_excel(file_path)  
  4.     stats = df.describe()  # 计算描述性统计  
  5.     stats.to_excel(output_file)  
  6. descriptive_statistics('example.xlsx', 'statistics_output.xlsx')  
  7. print("描述性统计输出成功!")
复制代码
解释

该脚本盘算Excel文件的形貌性统计信息(如均值、尺度差等),并将结果保存到新的Excel文件中。这对于了解数据的基本特性非常重要,尤其在数据分析前期阶段。
9. 批量修改Excel文件名称

  1. import os  
  2. # 批量重命名指定目录下的Excel文件  
  3. def rename_excel_files(directory, prefix):  
  4.     for filename in os.listdir(directory):  
  5.         if filename.endswith('.xlsx'):  
  6.             new_name = f"{prefix}_{filename}"  
  7.             os.rename(os.path.join(directory, filename), os.path.join(directory, new_name))  
  8.             print(f"已将 {filename} 重命名为 {new_name}")  
  9. rename_excel_files('/path/to/excel/files', '2024')
复制代码
解释

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

  1. import smtplib  
  2. from email.mime.multipart import MIMEMultipart  
  3. from email.mime.application import MIMEApplication  
  4. from email.mime.text import MIMEText  
  5. # 自动发送带有Excel附件的电子邮件  
  6. def send_email(to_address, subject, body, excel_file):  
  7.     from_address = "your_email@example.com"  
  8.     password = "your_password"  
  9.     msg = MIMEMultipart()  
  10.     msg['From'] = from_address  
  11.     msg['To'] = to_address  
  12.     msg['Subject'] = subject  
  13.     # 添加正文  
  14.     msg.attach(MIMEText(body, 'plain'))  
  15.     # 添加Excel附件  
  16.     with open(excel_file, "rb") as attachment:  
  17.         part = MIMEApplication(attachment.read(), Name=os.path.basename(excel_file))  
  18.         part['Content-Disposition'] = f'attachment; filename="{os.path.basename(excel_file)}"'  
  19.         msg.attach(part)  
  20.     # 发送邮件  
  21.     with smtplib.SMTP('smtp.example.com', 587) as server:  
  22.         server.starttls()  
  23.         server.login(from_address, password)  
  24.         server.send_message(msg)  
  25. send_email('recipient@example.com', 'Monthly Report', 'Please find attached the monthly report.', 'report.xlsx')  
  26. print("邮件发送成功!")
复制代码
解释

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

  1. import pandas as pd
  2. import os
  3. def merge_excel_files(folder_path, output_file):
  4.     all_data = pd.DataFrame()
  5.     for filename in os.listdir(folder_path):
  6.         if filename.endswith('.xlsx'):
  7.             file_path = os.path.join(folder_path, filename)
  8.             df = pd.read_excel(file_path)
  9.             all_data = pd.concat([all_data, df], ignore_index=True)
  10.     all_data.to_excel(output_file, index=False)
  11. merge_excel_files('your_folder_path', 'merged_file.xlsx')
  12. print("多个Excel文件合并成功!")
复制代码
解释

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

  1. import pandas as pd
  2. def split_excel_file(file_path, column_name, output_folder):
  3.     df = pd.read_excel(file_path)
  4.     unique_values = df[column_name].unique()
  5.     for value in unique_values:
  6.         sub_df = df[df[column_name] == value]
  7.         output_file = os.path.join(output_folder, f'{value}.xlsx')
  8.         sub_df.to_excel(output_file, index=False)
  9. split_excel_file('example.xlsx', '部门', 'output_folder')
  10. print("Excel文件拆分成功!")
复制代码
解释

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

  1. import pandas as pd
  2. def replace_cell_content(file_path, column_name, old_value, new_value):
  3.     df = pd.read_excel(file_path)
  4.     df[column_name] = df[column_name].replace(old_value, new_value)
  5.     df.to_excel(file_path, index=False)
  6. replace_cell_content('example.xlsx', '产品名称', '旧产品', '新产品')
  7. print("单元格内容替换成功!")
复制代码
解释

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

  1. import pandas as pd
  2. def sort_excel_data(file_path, column_name, ascending=True):
  3.     df = pd.read_excel(file_path)
  4.     df = df.sort_values(by=column_name, ascending=ascending)
  5.     df.to_excel(file_path, index=False)
  6. sort_excel_data('example.xlsx', '销售额', ascending=False)
  7. print("数据排序成功!")
复制代码
解释

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

  1. import pandas as pd
  2. def count_unique_values(file_path, column_name):
  3.     df = pd.read_excel(file_path)
  4.     unique_count = df[column_name].nunique()
  5.     print(f"{column_name}列的唯一值数量为: {unique_count}")
  6. count_unique_values('example.xlsx', '客户编号')
复制代码
解释

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

  1. import pandas as pd
  2. def extract_columns(file_path, columns, output_file):
  3.     df = pd.read_excel(file_path)
  4.     new_df = df[columns]
  5.     new_df.to_excel(output_file, index=False)
  6. extract_columns('example.xlsx', ['姓名', '年龄'], 'extracted_columns.xlsx')
  7. print("指定列提取成功!")
复制代码
解释

此脚本可以从一个Excel文件中提取指定的列,并保存到一个新的Excel文件中。当我们只必要数据中的部门信息时,使用这个脚本可以快速筛选出所需的数据,制止处理大量无关信息。
17. 为Excel表格添加边框

  1. from openpyxl import load_workbook
  2. from openpyxl.styles import Border, Side
  3. def add_border_to_excel(file_path):
  4.     wb = load_workbook(file_path)
  5.     ws = wb.active
  6.     thin_border = Border(left=Side(style='thin'),
  7.                          right=Side(style='thin'),
  8.                          top=Side(style='thin'),
  9.                          bottom=Side(style='thin'))
  10.     for row in ws.iter_rows():
  11.         for cell in row:
  12.             cell.border = thin_border
  13.     wb.save(file_path)
  14. add_border_to_excel('example.xlsx')
  15. print("表格边框添加成功!")
复制代码
解释

该脚本为Excel表格中的每个单元格添加了细边框。添加边框可以使表格更加清楚易读,特别是在打印或展示数据时,能够提升表格的雅观度和专业性。
18. 查抄Excel文件中是否存在空行并删除

  1. import pandas as pd
  2. def remove_empty_rows(file_path):
  3.     df = pd.read_excel(file_path)
  4.     df = df.dropna(how='all')
  5.     df.to_excel(file_path, index=False)
  6. remove_empty_rows('example.xlsx')
  7. print("空行删除成功!")
复制代码
解释

此脚本用于查抄Excel文件中是否存在所有列都为空的行,并将这些空行删除。空行大概会影响数据处理和分析的结果,通过删除空行可以保证数据的完备性和正确性。
19. 根据多列条件筛选数据

  1. import pandas as pd
  2. def filter_data_by_multiple_conditions(file_path, conditions, output_file):
  3.     df = pd.read_excel(file_path)
  4.     query_str = ' & '.join([f'{col} {op} {val}' for col, op, val in conditions])
  5.     filtered_df = df.query(query_str)
  6.     filtered_df.to_excel(output_file, index=False)
  7. # 示例条件:年龄大于25且性别为女
  8. conditions = [('年龄', '>', 25), ('性别', '==', "'女'")]
  9. filter_data_by_multiple_conditions('example.xlsx', conditions, 'filtered_data.xlsx')
  10. print("多条件筛选数据成功!")
复制代码
解释

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

  1. import pandas as pd
  2. def format_date_column(file_path, column_name, date_format):
  3.     df = pd.read_excel(file_path)
  4.     df[column_name] = pd.to_datetime(df[column_name]).dt.strftime(date_format)
  5.     df.to_excel(file_path, index=False)
  6. format_date_column('example.xlsx', '日期', '%Y-%m-%d')
  7. print("日期列格式化成功!")
复制代码
解释

此脚本用于对Excel文件中指定的日期列进行格式化。在处理日期数据时,不同的业务需求大概必要不同的日期格式,通过这个脚本可以将日期列转换为我们必要的格式,方便后续的数据分析和展示。
希望这些Excel自动化脚本能够进一步资助你进步工作服从,更好地掌握Python在Excel数据处理方面的应用!假如你在实践过程中有任何疑问,欢迎随时交换。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表