电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 實現自動化Excel報表的步驟

瀏覽:125日期:2022-06-23 15:32:38

好幾個月沒有寫筆記了, 并非沒有積累, 而是有點懶了. 想想還是要續上, 作為工作成長的一部分哦.

最近有做一些報表, 但一直找不到一個合適的報表工具, 又實在不想寫前端, 后端... 思來想去, 感覺 Excel 就一定程度上能做可視化的, 除了不能動態交互外, 其他都挺好. 今天分享的就是一個關于如何用 Py 來自動化Excel 報表, 解放雙手, 提高工作效率哦.

總體解決方案

Python 實現自動化Excel報表的步驟

輸出報表

當然是測試用的假數據啦.

Python 實現自動化Excel報表的步驟

自動化Py腳本

基本思路: 1. 準備模板數據需要的 SQL 2. 用 Pandas 連接 數據庫 并執行 SQL, 返回 DataFrame 3. 用 Xlwings 直接打開 Excel, 并將這些 DataFrame 填充到 寫死的 單元格4. 保存并退出

具體代碼如下哦:

import pandas as pd import xlwings as xwimport pymssql# 各品類月同期 def get_last_year_sale(start_date, end_date): '''各品類同期銷量, 對比19年''' sql_01 = f''' SELECT 品類 , SUM(數量) AS QTY FROM XXX WHERE 是否電商 = 1 AND 銷售時間 BETWEEN DATEADD(YEAR, -2, ’{start_date}’) AND DATEADD(YEAR, -2, ’{end_date}’) GROUP BY 品類 ''' df = pd.read_sql(sql_01, con=con) df_xtc = df[df[’品類’] == ’A品類’][[’品類’, ’QTY’]] df_bbk = df[df[’品類’] == ’B品類’][[’品類’, ’QTY’]] return df_xtc, df_bbk def get_anget_sale(start_date, end_date): '''返回各品類, 各區域的時間段銷量''' sql = f''' SELECT 品類 , AGENT , SUM(數量) AS QTY , ROW_NUMBER()OVER(PARTITION BY 品類 ORDER BY SUM(數量) DESC) MY_RANK FROM XXX WHERE 是否電商 = 1 AND 銷售時間 BETWEEN ’{start_date}’ AND ’{end_date}’ GROUP BY AGENT, 品類 ''' df = pd.read_sql(sql, con=con) df_xtc = df[df[’品類’] == ’A品類’][[’AGENT’, ’QTY’]] df_bbk = df[df[’品類’] == ’B品類’][[’AGENT’, ’QTY’]] df_pad = df[df[’品類’] == ’C品類’][[’AGENT’, ’QTY’]] return df_xtc, df_bbk, df_pad def get_machine_sale(start_date, end_date): '''返回各品類, 各區域的時間段銷量''' sql = f''' SELECT 品類 , 機型 , SUM(數量) AS QTY , ROW_NUMBER()OVER(PARTITION BY 品類 ORDER BY SUM(數量) DESC) MY_RANK FROM V_REALSALE WHERE 是否電商 = 1 AND 銷售時間 BETWEEN ’{start_date}’ AND ’{end_date}’ GROUP BY 機型, 品類 ''' df = pd.read_sql(sql, con=con) df_xtc = df[df[’品類’] == ’A品類’][[’機型’, ’QTY’]] df_bbk = df[df[’品類’] == ’B品類’][[’機型’, ’QTY’]] return df_xtc, df_bbk # main con = pymssql.connect(’xxxxx’, ’sxxx’, ’xxxxxx’, ’xxxxx’)# 基礎配置: 根據用戶輸入當前日期, 輸出當月, 當季度第一天 print('歡迎哦, 此小程序專門為XX看板做數據自動更新呢~')print()today = input('請輸入截止日期(昨天), 形如: 2021/5/20 按回車結束: ')if len(today.split(’/’)) != 3: raise '日期格式輸入錯誤!!, 請按照形如 ’2021/5/20’的格式重新輸入'else: m_cur = today.split(’/’)[1] m_first_day = ’2021/’ + m_cur + ’/1’# 季度第一天 if m_cur in (’1’, ’01’, ’2’, ’02’, ’3’, ’03’): q_time_start = ’2021/1/1’ elif m_cur in (’4’, ’04’, ’5’, ’05’, ’6’, ’06’): q_time_start = ’2021/4/1’ elif m_cur in (’7’, ’07’, ’8’, ’08’, ’9’, ’09’): q_time_start = ’2021/7/1’else: q_time_start = ’2021/10/1’print()print('正在開始更新....')print('提示, 接下看到閃退, 是正?,F象, 就程序模擬人去打開文件, 填充數據, 不要緊張哦~~~')# 去年月, 季度同期 df_mm_xtc, df_mm_bbk = get_last_year_sale(m_first_day, today)df_qq_xtc, df_qq_bbk = get_last_year_sale(q_time_start, today)# 當月各地區累積銷量df_m_xtc, df_m_bbk, df_m_pad = get_anget_sale(m_first_day, today)# 各地區當季度銷量 df_q_xtc, df_q_bbk, df_q_pad = get_anget_sale(q_time_start, today)# 各機型當季度銷量 df_q_type_xtc, df_q_type_bbk = get_machine_sale(q_time_start, today) # 過濾掉 銷量為0的型號 df_q_type_xtc = df_q_type_xtc[df_q_type_xtc.QTY > 0]df_q_type_xtc.replace(’Z6áÛ·å°æ’, ’Z6巔峰版’, inplace=True)df_q_type_bbk = df_q_type_bbk[df_q_type_bbk.QTY > 0]# 打開excel 模板 等待數據填充 app = xw.App(visible=True, add_book=False)app.display_alerts = False # 關閉一些提示信息,可以加快運行速度。 默認為 True。app.screen_updating = Truewb = app.books.open('XXX_全品類_看板.xlsx')data_sht = wb.sheets[’數據’]# 19年當月同期銷量data_sht.range(’B9’).value = df_mm_xtc.valuesdata_sht.range(’G9’).value = df_mm_bbk.values# 當季度同比data_sht.range(’B10’).value = df_qq_xtc.valuesdata_sht.range(’G10’).value = df_qq_bbk.values# 填充各品類當月銷量, 注意單元格是寫死的哦data_sht.range(’I72’).value = df_m_xtc.valuesdata_sht.range(’T72’).value = df_m_bbk.valuesdata_sht.range(’AE72’).value = df_m_pad.values# 填充當季度銷量, 同理是寫死的data_sht.range(’A54’).value = df_q_xtc.valuesdata_sht.range(’F54’).value = df_q_bbk.valuesdata_sht.range(’K54’).value = df_q_pad.values# 填充當季度各型號, 同理是寫死的data_sht.range(’A21’).value = df_q_type_xtc.valuesdata_sht.range(’F21’).value = df_q_type_bbk.valueswb.save()app.quit()print()print('~~更新結束了哦~~')print()input('請按任意鍵退出~~')print()print(’BYE~~ 人生若只如初見呢~~’)打包 EXE 桌面小程序

最好用一個純凈的 虛擬環境打包.

終端命令: python -m venv 虛擬環境名稱

然后進入腳本目錄下, 進行打包哦.

pyinstaller main.py -F

Python 實現自動化Excel報表的步驟

打包成功后的樣子.

Python 實現自動化Excel報表的步驟

雙擊運行即可哦.

Python 實現自動化Excel報表的步驟

這時候再重新打開該目錄下的 Excel 模板, 發現數據已經自動更新了.

我現在真的感受到, 用開發的思維做一些腳本工具, 真的會極大提高我現在當文員的很多重復性工作哦!

以上就是Python 實現自動化Excel報表的步驟的詳細內容,更多關于python 自動化Excel報表的資料請關注好吧啦網其它相關文章!

標簽: python
相關文章:
主站蜘蛛池模板: 无锡网站建设_小程序制作_网站设计公司_无锡网络公司_网站制作 | 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 空气能采暖,热泵烘干机,空气源热水机组|设备|厂家,东莞高温热泵_正旭新能源 | 高铝砖-高铝耐火球-高铝耐火砖生产厂家-价格【荣盛耐材】 | 石牌坊价格石牌坊雕刻制作_石雕牌坊牌楼石栏杆厂家_山东嘉祥石雕有限公司 | NM-02立式吸污机_ZHCS-02软轴刷_二合一吸刷软轴刷-厦门地坤科技有限公司 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 翰香原枣子坊加盟费多少钱-正宗枣核糕配方培训利润高飘香 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗 | 压力喷雾干燥机,喷雾干燥设备,柱塞隔膜泵-无锡市闻华干燥设备有限公司 | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 不锈钢丸厂家,铝丸,铸钢丸-淄博智源铸造材料有限公司 | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 幂简集成 - 品种超全的API接口平台, 一站搜索、试用、集成国内外API接口 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 二维运动混料机,加热型混料机,干粉混料机-南京腾阳干燥设备厂 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | 北京模型公司-工业模型-地产模型-施工模型-北京渝峰时代沙盘模型制作公司 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 采暖炉_取暖炉_生物质颗粒锅炉_颗粒壁炉_厂家加盟批发_烟台蓝澳采暖设备有限公司 | 鲁网 - 山东省重点新闻网站,山东第一财经门户 | 农业仪器网 - 中国自动化农业仪器信息交流平台 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 烟气在线监测系统_烟气在线监测仪_扬尘检测仪_空气质量监测站「山东风途物联网」 | 宁波普瑞思邻苯二甲酸盐检测仪,ROHS2.0检测设备,ROHS2.0测试仪厂家 | 礼仪庆典公司,礼仪策划公司,庆典公司,演出公司,演艺公司,年会酒会,生日寿宴,动工仪式,开工仪式,奠基典礼,商务会议,竣工落成,乔迁揭牌,签约启动-东莞市开门红文化传媒有限公司 | 江苏全风,高压风机,全风环保风机,全风环形高压风机,防爆高压风机厂家-江苏全风环保科技有限公司(官网) | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 德州网站开发定制-小程序开发制作-APP软件开发-「两山开发」 |