如何保留 Excel 表头和第一行数据并追加 CSV 数据
准备工作
在开始之前,确保你的 Python 环境中已经安装了 openpyxl
和 pandas
库。可以使用以下命令进行安装:
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)
如何保留 Excel 表头和第一行数据并追加 CSV 数据的更多相关文章
- Python:读取Excel 不带第一行标题
#根据第0到第1列进行重建 0-X 1-Y PX=sheet_name.col_values(0)[1:] PY=sheet_name.col_values(1)[1:] 读取的某一列后在后边加[1: ...
- python openpyxl模块实现excel的读取,新表创建及原数据表追加新数据
当实际工作需要把excel表的数据读取出来,或者把一些统计数据写入excel表中时,一个设计丰富,文档便于寻找的模块就会显得特别的有吸引力,本文对openpyxl模块的一些常见用法做一些记录,方便工作 ...
- Jmeter系列(32)- 详解 CSV 数据文件设置
如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 了解一哈什么是 CSV 文件 为了实现 ...
- Pandas_数据读取与存储数据(全面但不精炼)
Pandas 读取和存储数据 目录 读取 csv数据 读取 txt数据 存储 csv 和 txt 文件 读取和存储 json数据 读取和存储 excel数据 一道练习题 参考 Numpy基础(全) P ...
- form表单序列化数据之后,追加额外数据
form表单序列化数据之后追加额外数据多使用在js中,下面是追加额外数据的代码: <span style="font-size:18px;">$.param({'inv ...
- python 去除Excel中的重复行数据
导入pandas import pandas as pd 1.读取excel中的数据: frame = pd.DataFrame(pd.read_csv('excel的绝对路径.csv'', 'She ...
- 一个将当前目录下HEX文件的第一行数据删除的程序
为什么要写这样一个函数 在使用SoftConsole开发M3程序时,生成的hex文件,必须要把第一行数据删除,才能在Libero中使用,所以写了这个小工具,这是2.0版本了,第一版是直接删除第一行数据 ...
- 四十四、在SAP中冻结第一行表头
一.表格数据量大了,如果需要界面滚动,则看不到第一行的表头文本 二.代码如下: 二.效果如下,任意滚动,表头还是被冻结可以看到
- (转)supertable像excel那样固定table的表头和第一列
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"/> <title> ...
- pandas:字段值插入数据表第一行的解决办法
1. 问题描述 在对课程表进行数据抽取时,由于课表结构的原因,需要在原始表字段名作为第一行数据,并对原始字段名进行替换. 原始数据如下所示: 2. 解决办法 经思考,此问题可抽象为:在不影响原始数据的 ...
随机推荐
- huggingface vit训练CIFAR10数据集代码 ,可以改dataset训练自己的数据
上代码,使用hugging face fineturn vit模型 自己写的代码 from transformers import ViTImageProcessor, ViTForImageClas ...
- C#的基于.net framework的Dll模块编程(一) - 编程手把手系列文章
从此博文开始分几篇介绍C#的开发.这次讲讲C#的.net framework的Dll文件类库模块的编程方法. 对于Windows来说,要运行应用程序要基于Dll类库和Exe执行文件.对于笔者来说,模块 ...
- SpringBoot Admin2.0 集成 Java 诊断神器 Arthas 实践
简介: 项目最初使用 Arthas 主要有两个目的: 1. 通过 arthas 解决实现测试环境.性能测试环境以及生产环境性能问题分析工具的问题. 2. 通过使用 jad.mc.redefine 功能 ...
- Dubbo-Admin 正式支持 3.0 服务治理
简介:Dubbo 相信大家并不陌生,是一款微服务开发框架,它提供了 RPC 通信与微服务治理两大关键能力.大家在日常开发中更多使用的是 Dubbo 提供的 RPC 通信这一部分能力,而对其提供的服务 ...
- [FE] FastAdmin 动态下拉组件 Selectpage 自定义 data-params
正常情况下,我们想获取列表只需要定义接口路径和要显示的字段名即可, 比如: <input id="c-package_ids" data-rule="require ...
- [FE] 实时视频流库 hls.js 重载切换资源的方式
hls 播放需要先 attachMedia,然后 loadSource. 如果切换 resource,需要先执行 hls.destroy(),否则会出现混乱. destroy 之后再依次进行 hls ...
- Roslyn 将构建时间写入到输出文件
我期望在每次构建完成之后,创建一个文件,在这个文件里面写入是什么时间构建的.这个需求实现非常简单,只需要使用 Target 在构建完成,使用 WriteLinesToFile 方法写入时间到输出文件即 ...
- IIncrementalGenerator 增量 Source Generator 生成代码入门 从语法到语义 获取类型完全限定名
本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何从语法分析过程,将获取的语法 Token 转换到语义分析上,比如获取类 ...
- Asp-Net-Core开发笔记:进一步实现非侵入性审计日志功能
前言 上次说了利用 AOP 思想实现了审计日志功能,不过有同学反馈还是无法实现完全无侵入,于是我又重构了一版新的. 回顾一下:Asp-Net-Core开发笔记:实现动态审计日志功能 现在已经可以实现对 ...
- VUE+element页面按钮调用dialog
VUE+element通过按钮调用普通弹框(弹框页面独立出一个dialog页面,非在同一个页面文件里) 代码如下 <el-dialog> <el-button type=" ...