当前位置: 首页 > news >正文

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。

库的安装

pip install xlrd -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install xlutils -i https://pypi.tuna.tsinghua.edu.cn/simple/

完整代码

# 导入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基础学习专栏

http://www.lryc.cn/news/424236.html

相关文章:

  • 40、Python之面向对象:扩展的对象属性解析顺序(描述符 + MRO)
  • stm32—时钟、定时器和看门狗
  • Windows平台RTSP|RTMP播放器如何实时调节音量
  • Leetcode JAVA刷刷站(10)正则表达式匹配
  • 合并图片为pdf
  • 【Linux Install】Ubuntu20, Windows10 双系统安装
  • Keepalived + LVS实现高可用
  • Gin框架接入Prometheus,grafana辅助pprof检测内存泄露
  • 上海凯泉泵业入职测评北森题库题型分析、备考题库、高分攻略
  • Linux:基础IO
  • 奥运奖牌窥视
  • RUST实现远程操作电脑手机
  • spring01-spring容器启动过程分析
  • RAG与LLM原理及实践(12)--- Milvus RRFRanker的使用场景及源码分析
  • Nginx与Tomcat的区别
  • LeetCode 3151.特殊数组 I
  • 【产品那些事】The OX Active ASPM Platform
  • 欢迪迈手机商城设计与开发
  • Endnote与word关联 解决方案: COM加载项-----》CWYW插件安装
  • 用R语言运用 Shiny 包打造基于鸢尾花数据集的交互式数据可视化应用
  • Upload-Lab第3关:如何巧妙应对黑名单文件后缀检测?
  • SSLVPN对比IPSECVPN安全设备的起源、发展、以及目前行业使用场景
  • Hadoop大数据集群搭建
  • 【技术前沿】MetaGPT入门安装部署——用多个大语言模型解决任务!一键安装,只需填写OpenAI API
  • #compsoer基本使用01#
  • 基于c++的yolov5推理之前处理详解及代码(一)
  • Oracle(55)什么是并行查询(Parallel Query)?
  • 关于 Lora中 Chirp Spread Spectrum(CSS)调制解调、发射接收以及同步估计的分析
  • Java - API
  • 力扣 3152. 特殊数字Ⅱ