python刷新Excel模型数据源

举报
诡途 发表于 2021/11/19 01:34:07 2021/11/19
【摘要】 问题描述: 关于excel和python的协同联动 传统python处理完的数据直接to_excel(“file_path”) 是生成了一个新文件替换掉了原来的同名文件, 新文件只有当前写入的数据,原表...

问题描述:

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

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

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

代码示例:

#导入库
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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

透视表刷新

#导入库
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()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

文章来源: blog.csdn.net,作者:诡途,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_35866846/article/details/107322273

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。