Python保存数据到已存在的excel文件中【openpyxl / pandas】复制表格中的所有sheet到另一个表格

2023-11-19

大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师。欢迎大家跟我一起走进数据分析的世界,一起学习!

感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦。


前段时间在工作的时候遇到了一个问题——如何将数据保存到已存在的一个表格中,因为在之前整理的openpyxl大整理的这篇博文中我已经说过如何将表格中的sheet复制到另一个sheet中,所以这一次我自然而然的也想到了这个方法。

这里我再附上这段代码:

def copy_sheet(wb, wb2):
    sheetnames = wb.sheetnames
    for sheetname in sheetnames:
        print(sheetname)
        sheet = wb[sheetname]
        sheet2 = wb2.create_sheet(sheetname)

        # tab颜色
        sheet2.sheet_properties.tabColor = sheet.sheet_properties.tabColor

        wm = list(sheet.merged_cells)
        if len(wm) > 0:
            for i in range(0, len(wm)):
                cell2 = str(wm[i]).replace('(<CellRange ', '').replace('>,)', '')
                sheet2.merge_cells(cell2)

        for i, row in enumerate(sheet.iter_rows()):
            sheet2.row_dimensions[i+1].height = sheet.row_dimensions[i+1].height
            for j, cell in enumerate(row):
                sheet2.column_dimensions[get_column_letter(j+1)].width = sheet.column_dimensions[get_column_letter(j+1)].width
                sheet2.cell(row=i + 1, column=j + 1, value=cell.value)

                # 设置单元格格式
                source_cell = sheet.cell(i+1, j+1)
                target_cell = sheet2.cell(i+1, j+1)
                target_cell.fill = copy.copy(source_cell.fill)
                if source_cell.has_style:
                    target_cell._style = copy.copy(source_cell._style)
                    target_cell.font = copy.copy(source_cell.font)
                    target_cell.border = copy.copy(source_cell.border)
                    target_cell.fill = copy.copy(source_cell.fill)
                    target_cell.number_format = copy.copy(source_cell.number_format)
                    target_cell.protection = copy.copy(source_cell.protection)
                    target_cell.alignment = copy.copy(source_cell.alignment)

此时我们已经复制好原先表格的数据了,可以再此基本上继续进行操作。

这段代码我个人感觉能够满足绝大情况下的标题中的需求,但是这种方法同时也存在着很大的弊端——用时太长。

如果一个表格中只有一两个sheet,或者,每个sheet的内容很少的话,这个方法用起来自然没什么问题。但问题是在真实的工作场景中,哪里有那么简单的需求(或者说需求那么简单还要你写段代码干嘛),而且复制完之后呢,人们通常都更喜欢用pandas来处理数据,而这里用到的是openpyxl,并不是很讨喜,所以说这个方法只能给大家提供一个思路上的参考,而属实不能推荐给大家解决实际问题。

所以我思考了许久,终于发现了一个很实用的方法。

raw_excel = 'excel_raw.xlsx'
result_excel = 'result.xlsx'
workbook = load_workbook(raw_excel)
writer = pd.ExcelWriter(result_excel , engine='openpyxl')
writer.book = workbook

df_1.to_excel(writer, sheet_name='test1_sheet')
df_2.to_excel(writer, sheet_name='test2_sheet')

writer.save()
writer.close()

这种情况相较于上一种情况而言,真的毫不费时,不过这种方法主要是适用于在结合使用pandas的场景下,而对于我们绝大多数的数据方向的从业者来说,可以说是很适用了。

结束语

看完这篇,还有更多知识点分享给你哦,自己慢慢找哈,就在下面链接。


推荐关注的专栏

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python保存数据到已存在的excel文件中【openpyxl / pandas】复制表格中的所有sheet到另一个表格 的相关文章

随机推荐

  • [C++]备忘录模式

    备忘录模式 Memento Pattern 保存一个对象的某个状态 以便在适当的时候恢复对象 备忘录模式属于行为型模式 github源码路径 https github com dangwei 90 Design Mode 此文件包含 mai
  • Error:Cannot build artifact xxx:war exploded’ because it is included into a circular dependency 解决方法

    我报的错误是day0601和day1202冲突 试了网上的方法删除了idea中artifact中重复文件并没有解决问题 在网上找了很久也没解决 后来自己试了一下 这样操作以后我这个就不会报循环依赖的错误了
  • 天使投资和风险投资有何区别?

    7月5日 天使投资人张青永 左 和创业者胡宁波 右 做客雅虎 谈融资知识和技巧 以下内容摘自实录 主持人 我觉得 赢在中国 的目的就达到了 那进入我们今天的主题就是融资基础知识和技巧 这是一个很专业化的知识 大家对这个并不太清楚 比如天使投
  • 全网最详细IDEAvim配置(.ideavimrc)

    IDEAvim 写在前面 本配置文件用到的插件如下 IdeaVim IdeaVim EasyMotion IdeaVimExtension which key Vim快捷键提示插件 CodeGlance Pro 右侧代码小地图 Transl
  • Python下载库超时Connection to files.pythonhosted.org timed out问题解决(换源)

    一年没用Python 这突然有节课老师让用Python 用就用吧 一来就是一个下马威 pip版本太低不支持 更新还更新不了 就是超时 官网也进不去 抓狂中 按照提示命令更新 更新超时 哇呀呀呀 我们还是冷静下来分析以下问题吧 错误信息提示连
  • 一些常见BootLoader介绍

    首先区分一下BootLoader和Monitor的概念 严格来说 BootLoader只是引导设备并且执行主程序的固件 而Monitor还提供了更多的命令行接口 可以进行调试 读写内存 烧写Flash 配置环境变量等 Monitor在嵌入式
  • Qt自定义界面类并提升(提升的窗口部件)

    1 用Qt Creator新建一个自定义Widget 类名自定义为 QMyForm 2 在Qt Creator自带的设计师里面 把普通的Wiget提升为自定义的QMyForm 选择菜单 提升为 3 手动输入提升的类名 QMyForm 然后点
  • [lightm显示]ubuntu卡在启动界面

    解决lightdm刚下载 重启电脑ubuntu卡在紫色启动界面 1 重启电脑 2 进入恢复模式下的root 3 命令行输入 4 命令行输入reboot 环境 ubuntu20 04 解决 把显示管理器重新改回gdm3即可 1 重启电脑 2
  • 知识图谱之知识融合

    最近在 小象学院 上知识图谱的课程 做了一些笔记 现整理了一下 1 什么是知识融合 将来自不同知识库的同一实体融合在一起 目标 融合各层面的知识 合并两个知识图谱 本体 需要确认的是 1 等价实例 实体的匹配 左右两个人是同一个人 sams
  • 在python中使用pyspark读写Hive数据操作 --转载

    1 读Hive表数据 pyspark读取hive数据非常简单 因为它有专门的接口来读取 完全不需要像hbase那样 需要做很多配置 pyspark提供的操作hive的接口 使得程序可以直接使用SQL语句从hive里面查询需要的数据 代码如下
  • Intent.addFlags() 启动Activity的20种flags

    前言 在使用startActivity时候出现异常 Caused by Android util AndroidRuntimeException Calling startActivity from outside of an Activi
  • STL之set常见用法详解

    摘自胡凡的 算法笔记 仅作记录用 前言 set是一个内部自动有序且不含重复元素的容器 如果要使用set 需要添加set头文件 即 include
  • JavaFX打包为exe文件

    JavaFX打包为exe文件 传统的Java打包为exe文件是先打包成 jar的可执行文件 再用exe4j打包为exe文件 可以参考Java项目打包成exe的详细教程 Jepson6669 博客园 cnblogs com 该方法较为繁琐 而
  • 机器学习之集成学习(实验记录)

    集成学习实验任务 一 实验目标 二 实验内容 三 实验任务及步骤 四 实验总结 一 实验目标 了解集成学习的基本结构 训练方法 实现方法 并通过随机森林与Adaboost算法加深理解 二 实验内容 概念 集成学习 Ensemble lear
  • C++ 一个类访问另一个类的私有成员和保护成员

    友元类 class A friend class B private int aa class B public void output cout lt lt a aa lt lt endl private A a 使用友元类时注意 1 友
  • 前端开发行业真的会被AI取代吗?

    作者 殷圣魁 来源 58架构师 ID architects 58 前言 相信不少人看过一篇人工智能已经能实现自动编写HTML CSS的文章 人工智能开始取代前端的一部分工作 前端开发行业真的被人工智能取代吗 人工智能发展确实速度惊人 但是前
  • 微信开工具报getLocation:fail, the permission value is offline verifying

    解决办法是 部署到服务器就能获取到了
  • 知道用户画像标签有哪些维度、应用场景体系?是种什么样的体验

    相关文章 用户画像 3种标签类型 8大系统模块 用户运营 怎么分析用户活跃 指标波动 用户分析 店铺数据分析 小程序数据分析 思维导图 数据分析全知识 思维导图 Xmind思维导图 常用快捷键使用 本文参考 本文仅作学习分享 侵删 作者 赵
  • 非递归算法——快速排序、归并排序

    哈喽大家好 我是保护小周 本期为大家带来的是常见排序算法中的快速排序 归并排序 非递归算法 分享所有源代码 粘贴即可运行 保姆级讲述 包您一看就会 快来试试吧 目录 一 递归的缺陷 1 1 栈是什么 数据结构 栈 又是什么 他们之间有什么区
  • Python保存数据到已存在的excel文件中【openpyxl / pandas】复制表格中的所有sheet到另一个表格

    大家早上好 本人姓吴 如果觉得文章写得还行的话也可以叫我吴老师 欢迎大家跟我一起走进数据分析的世界 一起学习 感兴趣的朋友可以关注我的数据分析专栏 里面有许多优质的文章跟大家分享哦 前段时间在工作的时候遇到了一个问题 如何将数据保存到已存在