python刷新Excel模型数据源
【摘要】
问题描述:
关于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)