使用Python向已有Excel工作表sheet写入数据框dataframe数据

项目场景:

通常使用SQL、Python处理完数据后会将需要导出的数据输出成CSV格式,然后必要时使用Excel模板进行格式上的调整(供业务人员查看),或者输入到Excel模板进一步计算,该步骤一般都是人工操作,对Python最后的输出操作优化可以提高一点工作效率。

具体示例

原有工作簿有两个工作表sheet1,sheet2,sheet1带有格式,需要从Python导出数据往里面写入,sheet2是对sheet1其中两列进行计算的工作表,已写入公式

sheet2设定带有公式计算

Python中有该数据框数据需要输出至sheet1

data=pd.DataFrame({'年份':[1995,1996,1997,1998,1999],'地区':['广州市','广州市','广州市','广州市','广州市'],'性别':['男','男','男','男','男'],'婚姻':['未婚','未婚','未婚','未婚','未婚'],'AUM':[200000,200001,200002,200003,200004],'人数':[40,41,42,43,44]})

工具

openpyxl模块:可以使往Excel文件追加数据时而不覆盖文件写入的模块;
pandas模块:to_excel()将dataframe直接整个输出到Excel的函数

import pandas as pd
from openpyxl import load_workbook,Workbook

测试时注意每一次都需要完整读入与关闭(load与save,close),否则改动后会发现结果无变化,原因是读入的是前一次测试的结果.

解决方法

  • 方法1
    由于某些业务场景可能需要逐个单元格读入到已有表格中的某些位置,使用两层循环的方式逐格读入数据框的值
    需要注意的是表格位置与Python中数据框行列的起始位置的差异、range(m,n)实际输出的是从m至n-1的值。
##先读入文件路径
filepath=r'table.xlsx'
writer = pd.ExcelWriter(filepath, engine='openpyxl')
writer.book=load_workbook(filepath)
ws=writer.book["Sheet1"]#指定工作表
#原表格sheet1表头保留,因此读入表格从第2行开始,列起始列依然为1
#dataframe对象行列从0开始,因此需要对行列标做减法对应上
for i in range(2,7):for j in range(1,7):ws.cell(row=i,column=j).value=data.iloc[i-2,j-1]
writer.save()#保存后才能成功改动
writer.close()

结果:
sheet1成功追加更新,表头未有变化

sheet2计算得出结果

  • 方法2:
    整个dataframe写入到sheet1中,覆盖sheet1中的数据。
    但原有表格格式样式发生部分变化(行标题字体从微软雅黑变成了宋体,但单元格颜色和加粗无变化)
##先读入文件路径
filepath=r'table.xlsx'
writer = pd.ExcelWriter(filepath, engine='openpyxl')
writer.book=load_workbook(filepath)
writer.sheets={ws.title:ws for ws in writer.book.worksheets}
data.to_excel(writer,"Sheet1",index=False)#行序号不需要,设定为index=False
writer.save()
writer.close()

sheet1覆盖数据,更新成功,首行单元格格式无大变化,因此该操作不是重新另建一个sheet的结果

sheet2计算得出结果

writer.sheets={ws.title:ws for ws in writer.book.worksheets}

这句话是从别的博主中抄的,见下面参考链接,具体含义不明,如果删除掉这句话,继续执行后面的语句,原有的工作簿会多出一个sheet11,而不是在原有的sheet1中写入数据

见下面的参考链接

https://www.cnblogs.com/eternalpal/p/12920678.html
http://www.360doc.com/content/19/1228/21/644962_882790477.shtml
http://www.cocoachina.com/articles/93352
https://blog.csdn.net/miss_audrey/article/details/102741103

Python向已有Excel工作表sheet写入数据框dataframe相关推荐

  1. 在excel工作表中c1单元格_已知Excel工作表中A1单元格和B1单元格的值分别为“电子科技大学”、“信息中心”,要求在C1单元格显示“...

    已知Excel工作表中A1单元格和B1单元格的值分别为"电子科技大学"."信息中心",要求在C1单元格显示" 更多相关问题 所谓犯罪现象的特性,是指为 ...

  2. 计算机用公式找出第一名,用公式查找Excel工作表中重复数据

    前不久,一位网友求教,要求找出Excel工作表中的重复数据并在单元格中列出.我给出了一个数组公式供参考,但不是太符合要求,因为这个数组公式虽然找出了重复数据,但是如果将数组公式向下复制时超出了出现重复 ...

  3. 【ppt入门教程】如何让ppt与Excel工作表结合 实现数据的录入与计算

    转载者: ppt素材下载 搜索: 实现数据的录入与计算 ppt入门教程 如何让ppt与Excel工作表结合 在PowerPoint中实现数据的实时录入和自动计算<小熊住山洞ppt课件/stron ...

  4. python excel sheet 复制_使用Python win32com将整个excel工作表复制到新工作表

    我试图打开名为"N11 Result.xlsx"的现有工作簿.复制整个工作表"Sheet1"(将其重命名为"build with Python&quo ...

  5. python如何清空excel表格_利用python操作win32com删除excel工作表

    win32com是一个操作excel的接口.在使用python操作win32com的时候,默认是displayalerts的,而很多操作我们都是默认会操作,所以要关闭掉displayalerts. 下 ...

  6. 【快速查看 Excel工作表sheet个数】

    最近开发Java程序导出功能,根据easyExcel实现多sheet导出数据,多sheet根据关键字分区,更利于查看 小技巧 想要快速查看一个Excel里面有多少个sheet.最好的方式是通过函数来查 ...

  7. python在excel中数据画线_在python中使用excel工作表中的数据绘制图形

    我做了一些假设.假设你的数据是这样的:x y yerr_positive yerr_negative 1 1 0.1 0.2 2 2 0.1 0.2 3 3 0.1 0.2 4 4 0.1 0.2 我 ...

  8. python按照模板复制sheet页,python实现跨excel的工作表sheet之间的复制方法

    如何将某个Excel文件中的特定sheet复制到一个另一如何将某个Excel文件中的特定sheet复制到一个另一个Excel文件中去?小编给你倒一杯热水.可你惦记着其他饮料,所以你将它放置一旁.等你想 ...

  9. python做excel表格代码_python实现跨excel的工作表sheet之间的复制方法

    python,将test1的Sheet1通过"跨文件"复制到test2的Sheet2里面. 包括谷歌没有能搜出这种问题答案. 我们贴出代码. 我们加载openpyxl这个包来解决: ...

  10. python实现跨excel的工作表sheet之间的复制

    百度搜索问题:python复制Excel中的sheet到另外一个工作簿 其中一篇文章: 地址:https://blog.csdn.net/lingan_hong/article/details/727 ...

最新文章

  1. Drop Down ComboBox
  2. Phone重绘机制drawRect 转
  3. 设置Windows XP自动登录的两种方法
  4. 解读千人千面,洞悉数据智能的价值
  5. python常用运维模块_python常用模块之一
  6. 阿里内推题——物流派送员送快递最短路径问题
  7. 20应用统计考研复试要点(part39)--概率论与数理统计
  8. ThreadPoolTaskExecutor和ThreadPoolExecutor区别
  9. ora-07445 oracle 9,Oracle ORA-07445 : 出现异常错误: 核心转储(一)
  10. 一个脚本就能明白Shell 脚本中的位置参数的含义
  11. 基于SSM的车辆管理系统
  12. 华为GaussDB:封装JDBC数据连接访问华为GaussDB数据库实现CRUD
  13. 华为NP课程笔记15-Eth-Trunk与高级VLAN
  14. 【技术认证题库】SCCA理论aDesk-2考试【初级】
  15. win7主题文件夹背景破解
  16. Linux-用户操作
  17. 2021.07.10 存个直播间链接
  18. kdj线指标详解与案例探究
  19. JavaScript实现汉字转拼音功能
  20. google colab使用入门

热门文章

  1. 【git】基于github开源平台的项目进行二次开发
  2. 什么是生物质发电?生物质发电有哪些方法?
  3. python批量查询ip归属地_python查询ip归属地
  4. 什么是Meta分析?Meta分析是什么意思?以6篇高质量文献为例,吃透Meta分析基本概念
  5. raid硬盘速度测试软件,RAID 0模式下固态硬盘性能测试
  6. MySQL的两阶段提交(数据一致性)
  7. 图像 像素与分辨率的关系
  8. Qt程序无响应 原因总结
  9. Android 汇率换算对比小工具
  10. 右下角弹窗代码_vueamap使用步骤和代码示例