如何保留 Excel 表头和第一行数据并追加 CSV 数据

准备工作

在开始之前,确保你的 Python 环境中已经安装了 openpyxlpandas 库。可以使用以下命令进行安装:

复制代码
pip install openpyxl pandas

第一步:编写函数保留表头和第一行数据

我们首先编写一个函数 keep_first_two_rows,用于保留指定工作表的表头和第一行数据,其余数据将被删除。

复制代码
from openpyxl import load_workbook

def keep_first_two_rows(filepath, sheetname):
    try:
        # 加载 Excel 文件
        wb = load_workbook(filepath)
        ws = wb[sheetname]

        # 删除第三行之后的所有行
        ws.delete_rows(3, ws.max_row)

        # 保存修改后的 Excel 文件
        wb.save(filepath)
        print(f"成功保留表头和第一行数据到工作表 {sheetname}")
    except Exception as e:
        print(f"保留表头和第一行数据时出错: {e}")

解释:

  • load_workbook(filepath):加载指定路径的 Excel 文件。
  • wb[sheetname]:获取指定名称的工作表。
  • ws.delete_rows(3, ws.max_row):从第三行开始删除所有后续行,只保留前两行。
  • wb.save(filepath):保存对 Excel 文件的修改。

第二步:编写函数追加 CSV 数据

接下来,我们编写一个函数 append_data_from_csv,用于将 CSV 文件中的数据追加到指定工作表的末尾。

复制代码
import pandas as pd
from openpyxl import load_workbook

def append_data_from_csv(filepath, sheetname, csv_filepath):
    try:
        # 从 CSV 文件中读取新数据
        new_data = pd.read_csv(csv_filepath)

        # 加载 Excel 文件
        wb = load_workbook(filepath)
        ws = wb[sheetname]

        # 将新数据追加到工作表末尾
        for r_idx, row in enumerate(new_data.values, ws.max_row + 1):
            for c_idx, value in enumerate(row, 1):
                ws.cell(row=r_idx, column=c_idx, value=value)

        # 保存修改后的 Excel 文件
        wb.save(filepath)
        print(f"成功从 CSV 文件中追加新数据到工作表 {sheetname} 后面")
    except Exception as e:
        print(f"追加新数据时出错: {e}")

解释:

  • pd.read_csv(csv_filepath):使用 pandas 从指定路径读取 CSV 文件中的数据。
  • wb[sheetname]:获取指定名称的工作表。
  • enumerate(new_data.values, ws.max_row + 1):从工作表的最后一行开始,逐行追加 CSV 数据。
  • ws.cell(row=r_idx, column=c_idx, value=value):将 CSV 文件中的每个值插入到 Excel 工作表的对应单元格中。
  • wb.save(filepath):保存对 Excel 文件的修改。

第三步:主程序调用

最后,我们编写主程序,调用以上两个函数,完成具体操作。

复制代码
if __name__ == "__main__":
    # 指定 Excel 文件路径、工作表名和 CSV 文件路径
    excel_file_path = "C:\\Users\\Administrator\\Desktop\\销售系数数据同步.xlsx"
    sheet_name = "商品费用"
    csv_file_path = "F:\\工作内容\\我的数据\\商品费用解析数据\\商品费用数据汇总.csv"

    # 调用函数保留表头和第一行数据
    keep_first_two_rows(excel_file_path, sheet_name)

    # 调用函数从 CSV 文件中追加新数据到指定工作表后面
    append_data_from_csv(excel_file_path, sheet_name, csv_file_path)

解释:

  • excel_file_path:指定 Excel 文件的路径。
  • sheet_name:指定工作表名称。
  • csv_file_path:指定 CSV 文件的路径。
  • keep_first_two_rows(excel_file_path, sheet_name):调用函数保留表头和第一行数据。
  • append_data_from_csv(excel_file_path, sheet_name, csv_file_path):调用函数从 CSV 文件中追加新数据到指定工作表。

完整代码

复制代码
from openpyxl import load_workbook
import pandas as pd

def keep_first_two_rows(filepath, sheetname):
    try:
        # 加载 Excel 文件
        wb = load_workbook(filepath)
        ws = wb[sheetname]

        # 删除第三行之后的所有行
        ws.delete_rows(3, ws.max_row)

        # 保存修改后的 Excel 文件
        wb.save(filepath)
        print(f"成功保留表头和第一行数据到工作表 {sheetname}")
    except Exception as e:
        print(f"保留表头和第一行数据时出错: {e}")

def append_data_from_csv(filepath, sheetname, csv_filepath):
    try:
        # 从 CSV 文件中读取新数据
        new_data = pd.read_csv(csv_filepath)

        # 加载 Excel 文件
        wb = load_workbook(filepath)
        ws = wb[sheetname]

        # 将新数据追加到工作表末尾
        for r_idx, row in enumerate(new_data.values, ws.max_row + 1):
            for c_idx, value in enumerate(row, 1):
                ws.cell(row=r_idx, column=c_idx, value=value)

        # 保存修改后的 Excel 文件
        wb.save(filepath)
        print(f"成功从 CSV 文件中追加新数据到工作表 {sheetname} 后面")
    except Exception as e:
        print(f"追加新数据时出错: {e}")

if __name__ == "__main__":
    # 指定 Excel 文件路径、工作表名和 CSV 文件路径
    excel_file_path = "C:\\Users\\Administrator\\Desktop\\销售系数数据同步.xlsx"
    sheet_name = "商品费用"
    csv_file_path = "F:\\工作内容\\我的数据\\商品费用解析数据\\商品费用数据汇总.csv"

    # 调用函数保留表头和第一行数据
    keep_first_two_rows(excel_file_path, sheet_name)

    # 调用函数从 CSV 文件中追加新数据到指定工作表后面
    append_data_from_csv(excel_file_path, sheet_name, csv_file_path)
相关推荐
Calihen的学习日志7 小时前
【Pandas】3.1-数据预处理:列的基本操作
python·pandas
Source.Liu1 天前
【Python自动化】 21.2 Pandas 读取 Excel 时的 dtype 参数完全指南
python·自动化·pandas
Source.Liu1 天前
【Python自动化】 21 Pandas Excel 操作完整指南
python·excel·pandas
Source.Liu1 天前
【Python自动化】 21.1 Pandas 读取 Excel 文件的完整指南
python·自动化·pandas
偷心伊普西隆3 天前
Pandas DataFrame 指南
python·数据分析·pandas
chad__chang8 天前
Pandas的数据结构
数据结构·pandas
老歌老听老掉牙11 天前
Pandas DataFrame 列数操作完全指南
python·pandas
万粉变现经纪人11 天前
如何解决pip安装报错ModuleNotFoundError: No module named ‘websockets’问题
ide·pycharm·beautifulsoup·pandas·fastapi·pip·httpx
偷心伊普西隆15 天前
Python Excel 通用筛选函数
python·excel·pandas
高级测试工程师欧阳16 天前
python中selenium怎么使用
python·pandas