最近在跟隔壁部門閑聊的時候,,我發(fā)現(xiàn)會有這樣的情況。他們跟我吐槽說,,每天需要花很多時間做報表,,但我發(fā)現(xiàn)其實他們80%的報表都是機械、重復(fù)式的手工操作,,最夸張的一張報表需要花兩個小時才能更新完,。作為報表老油條,我就問他們?yōu)槭裁匆秒p手累死累活更新表格,,卻不考慮去學(xué)報表自動化,? 為了搞清楚這個原因,我觀察了很久,,得出了三點主要原因: 問題1:不知道原來報表還可以自動化 問題2:不清楚什么樣的報表,,適合用自動化 問題3:不了解用什么工具,能實現(xiàn)報表自動化 問題1:不知道原來報表還可以實現(xiàn)自動化用Excel手工做報表,,其實弊端很多,。①工作效率低下,一張每天都需要更新數(shù)據(jù)的表格,,如果需要人工操作,,就得每天花上2、3個小時一個個更新單元格 ②人為干預(yù)環(huán)節(jié)太多,,這就意味著準(zhǔn)確率無法保證,,出錯率極高。 所以不管是從提升效率,,還是減少報表出錯的角度來說,,我們都應(yīng)該減少手工操作,把這些機械,、重復(fù)的工作交給技術(shù)去做,。 現(xiàn)在問題來了,你會說,,我現(xiàn)在知道了,,原來報表也可以實現(xiàn)自動化,那什么樣的報表才適合用自動化?總不能我所有報表都用自動化吧,。這就到了問題2 問題2:什么樣的報表,,適合用報表自動化,?我們可以把報表分成兩類,,做個簡單的數(shù)學(xué)題來看看,自動化是不是真的方便,。 第一類是一次性的報表,,這種報表要花15分鐘做,且只做一次,,而做自動化要30分鐘,,這樣算下來,如果做自動化的話會虧15分鐘,,必然不劃算,。 第二類是常規(guī)性的報表,每個月要做4次,。這種報表做一次要30分鐘,,用自動化要60分鐘,開發(fā)完成后,,每次做要5分鐘,。以三個月為時間段計算的話,按照原來的流程,,要在這份報表上花30*12=360分鐘,,但用自動化后,只要花60+5*11=115分鐘,,節(jié)省了68%的時間,。并且時間跨度越大,節(jié)省時間越多,。 其實說白了,,就是重復(fù)性高、內(nèi)容固定的報表,,最適合用來做報表自動化,。 現(xiàn)在你肯定又會想問,好,,我現(xiàn)在知道報表自動化的好處了,,那到底要怎樣才能實現(xiàn)?會不會很難學(xué),?我學(xué)不會怎么辦? 問題3:不知道用什么工具能實現(xiàn)報表自動化實現(xiàn)報表自動化的路徑其實有很多,,但一般來說,最常用的有3種。 一,、精通Excel,,就寫VBA來實現(xiàn)報表自動化優(yōu)點:①Excel自帶,無需下載,,與Excel之間的交互很友好,;②易分享,可以把做好的模板分享給同事,,不是每個人的電腦上都會裝python,,但是每個人的電腦上都有Excel 缺點:①入門難:VBA代碼太不友好了,很容易就從入門到放棄 ②數(shù)據(jù)處理量有限:一旦數(shù)據(jù)量到十幾萬行的話,,Excel就撐不住了,,可能你花了三天三夜做好的報表,就直接卡到打不開了,。 二,、掌握Python,就寫代碼來實現(xiàn)報表自動化優(yōu)點:能夠?qū)崿F(xiàn)很多自動化設(shè)計,,從讀取數(shù)據(jù)到輸出數(shù)據(jù)都可以完成 缺點:①需要操作者學(xué)會寫代碼,,學(xué)習(xí)成本比較高。②數(shù)據(jù)處理量有限:如果說企業(yè)數(shù)據(jù)量涉及千萬上億條數(shù)據(jù),,一年可能要做上千張報表,,python加載數(shù)據(jù)就會極其卡頓,影響工作,。③一些復(fù)雜的報表,,尤其是非數(shù)據(jù)類的報表用Python開發(fā)也不適合,比如下方打印貨單的憑證,、發(fā)票套打,。 說了這么多,還是舉個例子來實踐一下吧 一次自動化的報表制作,,通常需要經(jīng)歷這樣幾個步驟:
1,、連接并操作數(shù)據(jù)庫 Python可以連接并操作各種數(shù)據(jù)庫,包括Oracle,、PostgreSQL,、MySQL、SQL Server 等等,。不同的數(shù)據(jù)庫,,需要安裝不同的第三方模塊,比如說,,要操作Oracle,,那么通常需要先安裝 cx_Oracle: pip install cx_Oracle 在開始操作數(shù)據(jù)庫之前,,需要先創(chuàng)建一個數(shù)據(jù)庫引擎,然后再連接數(shù)據(jù)庫:
如果你有數(shù)據(jù)庫賬號擁有創(chuàng)建表的權(quán)限,,那么就可以對數(shù)據(jù)庫進行增刪改查的操作,。 # 增con.execute('insert into usr(id, name) values(1, 'Jim')')con.execute('insert into usr(id, name) values(2, 'Joe')')# 刪con.execute('delete from usr where id = 1')# 改con.execute('update usr set name = 'Jack' where id = 2')# 查sql = 'select id, name from usr where id = :id'import pandas as pddf = pd.read_sql(sa.text(sql), engine, params={'id': 2})df 另外,利用Python去執(zhí)行各種SQL 語句,,自動完成更加復(fù)雜的數(shù)據(jù)庫操作,。 2、數(shù)據(jù)處理+自動化報表 在Python執(zhí)行SQL后,,取出原始數(shù)據(jù) 想要實現(xiàn)的報表如下,,這張日報表是用來監(jiān)控每一天的銷售,、發(fā)貨和用戶反饋情況 代碼如下(非完整版): 3,、設(shè)置定時郵件發(fā)送給相關(guān)人員 以上就是一個典型的日報表,源數(shù)據(jù)不變,,報表格式不變,,就可以通過這段腳本自動生成,生成的報表也可以實現(xiàn)推送,,利用Python實現(xiàn)自動化發(fā)送郵件,。 三、學(xué)會簡單SQL,,用報表工具一步實現(xiàn)報表自動化剛剛舉了Excel和Python的例子,,但其實這兩個方法各有各的優(yōu)缺點,那有沒有一種工具能融合兩個方法的優(yōu)點,,又同時能避開它們的缺點,?其實市面上已經(jīng)有很多成熟的報表工具,可以解決這個問題,,我拿知名度較高的報表工具FineReport舉例吧,。(文末可免費獲得激活碼) 相比較Python,在都能一步取數(shù),、輸出數(shù)據(jù)的前提下,,F(xiàn)R不需要寫幾百行的復(fù)雜代碼,只需要學(xué)會簡單的SQL語言,,就能取數(shù)設(shè)計報表,,絕大多數(shù)沒有代碼基礎(chǔ)的人也能上手,且因為用的是類Excel的操作界面,,使用習(xí)慣也不會有太大的改變,。再相較Excel,F(xiàn)R能夠直接從數(shù)據(jù)庫取數(shù),,數(shù)秒處理幾萬行的數(shù)據(jù),,不用再苦苦等著加載報表,。 說了這么多,還是和上面一樣,,舉個例子,,看FR是如何讓報表自動化,讓打工人擺脫報表折磨的,。其實很簡單,,只需解決三個難題:
第一步:報表如何取數(shù)對于大部分公司來說,,生產(chǎn)進度只能人工整理匯總Excel表格,數(shù)據(jù)亂且雜,,報表人的取數(shù)工作肉眼可見的困難,。這就是為什么大家在做日報周報的時候,想要的數(shù)據(jù)取不出來,,想填的數(shù)據(jù)填不進去,,費了半天時間整理的一堆報表只能爛在自己手里。 但用FineReport直連數(shù)據(jù)庫功能,,就可以很好解決這個問題,。 簡單來說,就是FineReport在數(shù)據(jù)庫的支撐下搭建了一個數(shù)據(jù)中心,,想做報表時就可以直接從庫中取數(shù),;同理你也可以將其集成到OA系統(tǒng)、ERP系統(tǒng)之中,,隨時取數(shù),、找數(shù)做報表。 除此之外,,F(xiàn)ineReport還擁有填報功能,,數(shù)據(jù)部門可以根據(jù)業(yè)務(wù)人員提的需求來設(shè)計填報模板。業(yè)務(wù)人員通過設(shè)計好的模板錄入數(shù)據(jù),,數(shù)據(jù)就會同步到數(shù)據(jù)庫中,。 第二步:報表如何自動生成,實現(xiàn)報表自動化解決了取數(shù)的問題后,,我希望我只需要做一次日報,,然后將其作為模板,以后再需要時可以直接調(diào)出來用,。 其實,,利用FineReport就可實現(xiàn)這個功能,你可以將制作好的模板保存在平臺中,,再需要制作日報時就可以直接將模板調(diào)出來,,大大減少重復(fù)制作報表的流程和時間,,將繁瑣復(fù)雜的日報變成再簡單不過的取數(shù)填數(shù)。 同時對于不同的報表適用對象,,你可以用FineReport設(shè)計出不同類型的模板,,比如總部一個模板,分廠一個模板,,不同的班組有不同的模板,,通過在幾個模板之間設(shè)置鉆取關(guān)系后就可以實現(xiàn)對企業(yè)報表數(shù)據(jù)的分級把控,需要時就直接調(diào)用,。 同時,,我們做日報周報的時候不免要涉及很多數(shù)據(jù)和項目進展情況,這時候直白枯燥的數(shù)字很難直接反映數(shù)據(jù)情況,,而這時候就可以通過FineReport的儀表板,、進度條等功能,用圖表來反映生產(chǎn)進度的健康情況,,同樣只需要調(diào)用模板填數(shù)就可以,。 有了模板,,很多人還是會有一個問題,,有的業(yè)務(wù)人員不想用系統(tǒng)錄入數(shù)據(jù),還是習(xí)慣用excel填報,,這種情況該怎么實現(xiàn)報表自動化呢,? 很簡單,F(xiàn)ineReport有多種方式來確保在基層的生產(chǎn)數(shù)據(jù)的錄入,,既可以支持固定樣式模板的填報報表,,也支持excel模板的直接導(dǎo)入。 比如,,IT人員可以根本業(yè)務(wù)人員的需要設(shè)計填報模板,,業(yè)務(wù)人員只要定期打開模板填報生產(chǎn)計劃或者生產(chǎn)結(jié)果即可;或者IT人員也可以為業(yè)務(wù)人員設(shè)計基于固定EXCEL表格的導(dǎo)入模板,,只需設(shè)計好數(shù)據(jù)庫與模板的表結(jié)構(gòu),,業(yè)務(wù)人員即可一鍵導(dǎo)入日常工作中在excel中的數(shù)據(jù)。 第三步:報表完成后如何自動發(fā)送一般情況下企業(yè)每天的報表需要按時發(fā)給領(lǐng)導(dǎo),,但是每次都需要手動上交報表,,一旦臨時有事,還要麻煩其他同事幫自己交報表,。 這個問題可以用FineReport的定時調(diào)度功能解決,,在系統(tǒng)設(shè)置好定時任務(wù),它會自動按時將做好的報表發(fā)送郵件或者短信給查看報表的人,。 總結(jié)我們剛剛講了那么多,,最后我們再回到報表本身看,。其實對于大多數(shù)企業(yè)來說,報表是需要定期制作,、發(fā)布的,,這就導(dǎo)致我們不得不定期去制作相同的報表。但這樣低效率,、高人力成本的做表方式早就被淘汰了,。 相反,自動化報表流程不僅可以減少人力,、時間成本,,還可以讓企業(yè)把主要精力放在數(shù)據(jù)分析上,真正把數(shù)據(jù)的價值用到位,,讓數(shù)據(jù)推動業(yè)務(wù),,輔助管理者進行決策,而不是僅僅讓數(shù)據(jù)的價值停留在手機和郵箱里,。 |
|