前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python刷新Excel模型数据源

python刷新Excel模型数据源

作者头像
诡途
发布2022-05-09 19:24:00
1.3K0
发布2022-05-09 19:24:00
举报
文章被收录于专栏:诡途的python路诡途的python路

问题描述:

关于excel和python的协同联动 传统python处理完的数据直接to_excel(“file_path”) 是生成了一个新文件替换掉了原来的同名文件, 新文件只有当前写入的数据,原表中的公式、透视之类的必要模型 以及其他sheet都不存在了

传统 excel建模遵循数据源和模型输出分离的原则

对于数据量比较大,处理完的数据比较小的话 可以借助python处理完直接替换掉模型数据源,可以发挥excel的可视化属性, 更方便与其他同事进行对接

代码示例:

代码语言:javascript
复制
#导入库
import pandas as pd
import numpy as np
import os,openpyxl


def refresh_data(file_path,sheet_name,data):
    book=openpyxl.load_workbook(file_path)
    writer=pd.ExcelWriter(file_path,engine="openpyxl")
    
    #在ExcelWriter的源代码中,它初始化空工作簿并删除所有工作表,
    #writer.book = book将原来表里面的内容保存到writer中
    writer.book=book
    
    #activate激活指定sheet工作表
    ws=book[sheet_name]
    
    #清空当前活动表数据
    for row in ws.iter_rows():
        for cell in row:
            cell.value=None
    
    #dataframe行列数
    idx_num,col_num=data.shape
    
    #新数据写入当前活动表-注意索引偏移
    #ws.append(line)会默认前面清除的地方有数据,从原数据位置下方开始追加
    for i in  range(1,idx_num+1):
        for j in range(1,col_num+1):
            ws.cell(row=i,column=j).value=data.iloc[i-1,j-1]
    
    #保存关闭writer
    writer.save()
    writer.close()
    
    return None

透视表刷新

代码语言:javascript
复制
#导入库
import win32com.client
import os,time

def refresh(path):
    application=win32com.client.Dispatch("Excel.Application")#调用WIn中的COM
    workbook = application.Workbooks.Open(path)#打开工作簿
    application.Visible = True
#     application.ScreenUpdating = False #打开屏幕更新
    application.AskToUpdateLinks = False
    workbook.RefreshAll()
#   刷新完成后继续执行
    application.AskToUpdateLinks = True 
    workbook.Save()
    workbook.Close(True)
    application.Quit()

数据透视表的刷新,可以不使用win32com (上面这种方法刷新全部数据源,包含PQ模型读取的数据) 直接在excel里设置数据透视表打开刷新即可 设置路径:数据透视–》设计–》选项–》数据–》(勾选)打开文件时刷新数据

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述:
  • 代码示例:
  • 透视表刷新
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档