Python利用xlrd复制一个Excel中的sheet保留原格式创建一个副本(注:xlrd只能读取xls)

目录

专栏导读

🌸 欢迎来到Python办公自动化专栏---Python处理办公问题,解放您的双手

🏳️‍🌈 博客主页:请点击------> 一晌小贪欢的博客主页求关注

👍 该系列文章专栏:请点击------>Python办公自动化专栏求订阅

🕷 此外还有爬虫专栏:请点击------>Python爬虫基础专栏求订阅

📕 此外还有python基础专栏:请点击------>Python基础学习专栏求订阅

文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

❤️ 欢迎各位佬关注! ❤️

库的介绍

导入库:使用xlrd读取Excel文件,使用xlutils.filter中的工具复制Excel文件。

copy2函数:接受一个xlrd.Book对象作为参数,复制整个工作簿并保留样式信息,返回复制后的工作簿及样式列表。

打开Excel文件:以保留格式信息和按需加载的方式打开文件1.xls。

复制工作簿:调用copy2函数复制工作簿。

写入数据:在复制后的工作簿的第一个单元格写入"aa",并应用原有样式。

保存文件:关闭原始工作簿以释放资源,并将复制后的工作簿保存为2-副本.xls。

库的安装

python 复制代码
pip install xlrd -i https://pypi.tuna.tsinghua.edu.cn/simple/
python 复制代码
pip install xlutils -i https://pypi.tuna.tsinghua.edu.cn/simple/

完整代码

python 复制代码
# 导入xlrd库,用于读取Excel文件
import xlrd
# 从xlutils.filter导入process, XLRDReader, XLWTWriter,用于处理Excel文件的复制和写入
from xlutils.filter import process, XLRDReader, XLWTWriter


# 加个装饰器测试时间
# def timeit(func):
#     def wrapper(*args, **kwargs):
#         import time
#         start_time = time.time()
#         result = func(*args, **kwargs)
#         end_time = time.time()
#         print(f"{func.__name__} took {end_time - start_time:.4f} seconds")
#         return result
#     return wrapper
# @timeit
def copy2(wb):
    """
    复制给定的工作簿,同时保留样式信息。
    参数:
    wb: 一个xlrd.Book对象,代表要复制的Excel文件。
    返回:
    一个元组,包含复制后的xlwt工作簿对象和样式列表。
    """
    # 初始化一个XLWTWriter对象,用于写入复制的内容
    w = XLWTWriter()
    # 使用XLRDReader读取源工作簿内容,并通过process函数将其复制到XLWTWriter对象中
    process(XLRDReader(wb, 'unknown.xls'), w)
    # 返回复制后的Excel内容和样式列表
    return w.output[0][1], w.style_list


# 参数formatting_info=True表示保留格式信息,on_demand=True表示按需加载工作表
rb = xlrd.open_workbook('1.xls', formatting_info=True, on_demand=True)
# 调用copy2函数复制工作簿,返回新的工作簿对象和样式信息
wb, s = copy2(rb)
# 获取复制后工作簿的第一个工作表
wbs = wb.get_sheet(0)
# 获取原工作簿的第一个工作表
rbs = rb.get_sheet(0)
# 获取单元格的样式,用于后续写入
styles = s[rbs.cell_xf_index(0, 0)]
# 关闭原工作簿的资源,释放内存
rb.release_resources()
# 在复制后的工作簿的第一个单元格中写入'aa',并应用之前获取的样式
# 保存复制后的工作簿到指定路径
wb.save("2-副本.xls")

转载至:https://segmentfault.com/q/1010000008270267

如果您想复制的Excel格式是xlsx,那么这篇文章可能会对您呦帮助

Python之Excel------复制一个sheet当做模板,生成多个sheet

总结

希望对初学者有帮助

致力于办公自动化的小小程序员一枚

希望能得到大家的【一个免费关注】!感谢

求个 🤞 关注 🤞

此外还有办公自动化专栏,欢迎大家订阅:Python办公自动化专栏

求个 ❤️ 喜欢 ❤️

此外还有爬虫专栏,欢迎大家订阅:Python爬虫基础专栏

求个 👍 收藏 👍

此外还有Python基础专栏,欢迎大家订阅:Python基础学习专栏

相关推荐
007php0072 分钟前
某大厂MySQL面试之SQL注入触点发现与SQLMap测试
数据库·python·sql·mysql·面试·职场和发展·golang
CodeCraft Studio3 分钟前
Excel处理控件Aspose.Cells教程:使用 Python 将 Pandas DataFrame 转换为 Excel
python·json·excel·pandas·csv·aspose·dataframe
flashlight_hi16 分钟前
LeetCode 分类刷题:2563. 统计公平数对的数目
python·算法·leetcode
java1234_小锋17 分钟前
Scikit-learn Python机器学习 - 特征预处理 - 归一化 (Normalization):MinMaxScaler
python·机器学习·scikit-learn
雨中散步撒哈拉25 分钟前
13、做中学 | 初一下期 Golang数组与切片
开发语言·后端·golang
0wioiw027 分钟前
Go基础(③Cobra)
开发语言·后端·golang
星空的资源小屋30 分钟前
网易UU远程,免费电脑远程控制软件
人工智能·python·pdf·电脑
楼田莉子35 分钟前
C++算法专题学习:栈相关的算法
开发语言·c++·算法·leetcode
IMER SIMPLE36 分钟前
人工智能-python-深度学习-神经网络-MobileNet V1&V2
人工智能·python·深度学习
晨非辰40 分钟前
#C语言——刷题攻略:牛客编程入门训练(九):攻克 分支控制(三)、循环控制(一),轻松拿捏!
c语言·开发语言·经验分享·学习方法·visual studio