page contents

Python自动化办公实战:轻松搞定Excel数据批量处理!

今天要教大家一个超实用的办公技能 —— 用Python批量处理Excel文件。在日常工作中,经常要处理多个部门的Excel报表,手动复制粘贴太费劲了,今天我们就用Python来解放双手!

attachments-2024-11-Gdc8fYzS6747c38e318f9.png

今天要教大家一个超实用的办公技能 —— 用Python批量处理Excel文件。在日常工作中,经常要处理多个部门的Excel报表,手动复制粘贴太费劲了,今天我们就用Python来解放双手!

应用场景举例

小张是一名销售数据分析师,每个月都要:
- 合并10个门店的销售报表
- 计算各项销售指标
- 生成数据透视表
- 导出汇总报告

如果手动处理,可能要花一整天...但用Python的话,不到1分钟就能搞定!

准备工作
首先,我们需要安装两个强大的Python库:

pip install pandas
pip install openpyxl

小贴士
pandas是数据处理的超级利器,openpyxl则专门负责Excel文件的读写。

导入需要的库:

import pandas as pd
import os
from datetime import datetime
 核心功能实现

 1. 合并多个Excel文件

def merge_excel_files(folder_path):
    # 存储所有数据框的列表
    all_data = []

    # 遍历文件夹中的所有Excel文件
    for filename in os.listdir(folder_path):
        if filename.endswith(('.xlsx', '.xls')):
            # 读取Excel文件
            file_path = os.path.join(folder_path, filename)
            df = pd.read_excel(file_path)

            # 添加来源标记
            df['数据来源'] = filename

            # 将数据添加到列表中
            all_data.append(df)

    # 合并所有数据
    merged_data = pd.concat(all_data, ignore_index=True)
    return merged_data

2. 数据清洗和处理

def process_sales_data(df):
    # 删除重复行
    df = df.drop_duplicates()

    # 处理缺失值
    df['销售额'].fillna(0, inplace=True)

    # 添加计算列
    df['毛利率'] = (df['销售额'] - df['成本']) / df['销售额'] * 100

    # 格式化日期列
    df['日期'] = pd.to_datetime(df['日期']).dt.strftime('%Y-%m-%d')

    return df

3. 生成数据分析报告

def generate_sales_report(df, output_path):

    # 创建Excel写入器
    with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
        # 写入原始数据
        df.to_excel(writer, sheet_name='原始数据', index=False)

        # 创建销售汇总
        pivot_sales = pd.pivot_table(
            df,
            index='门店',
            columns='产品类别',
            values='销售额',
            aggfunc='sum',
            margins=True
        )
        pivot_sales.to_excel(writer, sheet_name='销售汇总')

        # 创建毛利分析
        pivot_profit = pd.pivot_table(
            df,
            index='产品类别',
            values=['销售额', '毛利率'],
            aggfunc={'销售额': 'sum', '毛利率': 'mean'}
        )
        pivot_profit.to_excel(writer, sheet_name='毛利分析')

 完整实战示例

让我们把上面的功能组合起来:

```python
def main():
    # 设置文件路径
    input_folder = "D:/销售数据/月度报表"
    output_file = f"D:/销售数据/汇总报表_{datetime.now().strftime('%Y%m')}.xlsx"

    try:
        # 合并所有Excel文件
        print("正在合并Excel文件...")
        merged_data = merge_excel_files(input_folder)

        # 处理数据
        print("正在处理数据...")
        processed_data = process_sales_data(merged_data)

        # 生成报告
        print("正在生成报告...")
        generate_sales_report(processed_data, output_file)

        print(f"处理完成!报告已保存至:{output_file}")

    except Exception as e:
        print(f"处理过程中出现错误:{str(e)}")

if __name__ == "__main__":
    main()

 进阶技巧

1. 自定义Excel格式

def apply_excel_formatting(writer, sheet_name):
    workbook = writer.book
    worksheet = writer.sheets[sheet_name]

    # 设置标题格式
    header_format = workbook.add_format({
        'bold': True,
        'bg_color': '#D7E4BC',
        'border': 1
    })

    # 设置数值格式
    number_format = workbook.add_format({
        'num_format': '#,##0.00',
        'border': 1
    })

 2. 数据验证

def validate_data(df):

    # 检查必填字段
    required_columns = ['日期', '产品', '销售额', '成本']
    missing_columns = [col for col in required_columns if col not in df.columns]

    if missing_columns:
        raise ValueError(f"缺少必要的列:{missing_columns}")

    # 检查数据类型
    if not pd.api.types.is_numeric_dtype(df['销售额']):
        raise ValueError("销售额列必须为数值类型")



1. 数据备份:处理前务必备份原始文件
2. 内存管理:处理大量数据时,注意使用`chunksize`分批读取
3. 错误处理:添加适当的异常处理和日志记录
4. 格式兼容:注意Excel版本兼容性问题

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg



  • 发表于 2024-11-28 09:13
  • 阅读 ( 63 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1658 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1658 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章