Excel、Python靠邊站,這才是實現報表自動化最快的方法

IT公社
10 min readMar 10, 2022

--

最近在跟隔壁部門閒聊的時候,我發現會有這樣的情況。他們跟我吐槽說,每天需要花很多時間做報表,但我發現其實他們80%的報表都是機械、重複式的手工操作,最誇張的一張報表需要花兩個小時才能更新完。作為報表老油條,我就問他們為什麼要用雙手累死累活更新表格,卻不考慮去學報表自動化?

為了搞清楚這個原因,我觀察了很久,得出了三點主要原因:

問題1:不知道原來報表還可以自動化

問題2:不清楚什麼樣的報表,適合用自動化

問題3:不瞭解用什麼工具,能實現報表自動化

問題1:不知道原來報表還可以實現自動化

用Excel手工做報表,其實弊端很多。①工作效率低下,一張每天都需要更新資料的表格,如果需要人工操作,就得每天花上2、3個小時一個個更新單元格 ②人為干預環節太多,這就意味著準確率無法保證,出錯率極高。

所以不管是從提升效率,還是減少報表出錯的角度來說,我們都應該減少手工操作,把這些機械、重複的工作交給技術去做。

現在問題來了,你會說,我現在知道了,原來報表也可以實現自動化,那什麼樣的報表才適合用自動化?總不能我所有報表都用自動化吧。這就到了問題2

問題2:什麼樣的報表,適合用報表自動化?

我們可以把報表分成兩類,做個簡單的數學題來看看,自動化是不是真的方便。

第一類是一次性的報表,這種報表要花15分鐘做,且只做一次,而做自動化要30分鐘,這樣算下來,如果做自動化的話會虧15分鐘,必然不划算。

第二類是常規性的報表,每個月要做4次。這種報表做一次要30分鐘,用自動化要60分鐘,開發完成後,每次做要5分鐘。以三個月為時間段計算的話,按照原來的流程,要在這份報表上花30*12=360分鐘,但用自動化後,只要花60+5*11=115分鐘,節省了68%的時間。並且時間跨度越大,節省時間越多。

其實說白了,就是重複性高、內容固定的報表,最適合用來做報表自動化。

現在你肯定又會想問,好,我現在知道報表自動化的好處了,那到底要怎樣才能實現?會不會很難學?我學不會怎麼辦?

問題3:不知道用什麼工具能實現報表自動化

實現報表自動化的路徑其實有很多,但一般來說,最常用的有3種。

一、精通Excel,就寫VBA來實現報表自動化

優點:①Excel自帶,無需下載,與Excel之間的互動很友好;②易分享,可以把做好的模板分享給同事,不是每個人的電腦上都會裝python,但是每個人的電腦上都有Excel

缺點:①入門難:VBA程式碼太不友好了,很容易就從入門到放棄 ②資料處理量有限:一旦資料量到十幾萬行的話,Excel就撐不住了,可能你花了三天三夜做好的報表,就直接卡到打不開了。

二、掌握Python,就寫程式碼來實現報表自動化

優點:能夠實現很多自動化設計,從讀取資料到輸出資料都可以完成

缺點:①需要操作者學會寫程式碼,學習成本比較高。②資料處理量有限:如果說企業資料量涉及千萬上億條資料,一年可能要做上千張報表,python載入資料就會極其卡頓,影響工作。③一些複雜的報表,尤其是非資料類的報表用Python開發也不適合,比如下方列印貨單的憑證、發票套打。

說了這麼多,還是舉個例子來實踐一下吧

一次自動化的報表製作,通常需要經歷這樣幾個步驟:

  • 連線並操作資料庫
  • 資料處理+自動化報表
  • 設定定時郵件傳送給相關人員

1、連線並操作資料庫

Python可以連線並操作各種資料庫,包括Oracle、PostgreSQL、MySQL、SQL Server 等等。不同的資料庫,需要安裝不同的第三方模組,比如說,要操作Oracle,那麼通常需要先安裝 cx_Oracle:

pip install cx_Oracle

在開始操作資料庫之前,需要先建立一個數據庫引擎,然後再連線資料庫:

from sqlalchemy import create_engine
# 建立資料庫引擎engine = create_engine('oracle://user:password@ip_address:1521/orcl')
# 連線資料庫con = engine.connect()

如果你有資料庫賬號擁有建立表的許可權,那麼就可以對資料庫進行增刪改查的操作。

# 增
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 pd
df = pd.read_sql(sa.text(sql), engine, params={'id': 2})
df

另外,利用Python去執行各種SQL 語句,自動完成更加複雜的資料庫操作。

2、資料處理+自動化報表

在Python執行SQL後,取出原始資料

想要實現的報表如下,這張日報表是用來監控每一天的銷售、發貨和使用者反饋情況

程式碼如下(非完整版):

3、設定定時郵件傳送給相關人員

以上就是一個典型的日報表,源資料不變,報表格式不變,就可以透過這段指令碼自動生成,生成的報表也可以實現推送,利用Python實現自動化傳送郵件。

三、學會簡單SQL,用報表工具一步實現報表自動化

剛剛舉了Excel和Python的例子,但其實這兩個方法各有各的優缺點,那有沒有一種工具能融合兩個方法的優點,又同時能避開它們的缺點?其實市面上已經有很多成熟的報表工具,可以解決這個問題,我拿知名度較高的報表工具FineReport舉例吧。(文末可免費獲得啟用碼)

相比較Python,在都能一步取數、輸出資料的前提下,FR不需要寫幾百行的複雜程式碼,只需要學會簡單的SQL語言,就能取數設計報表,絕大多數沒有程式碼基礎的人也能上手,且因為用的是類Excel的操作介面,使用習慣也不會有太大的改變。再相較Excel,FR能夠直接從資料庫取數,數秒處理幾萬行的資料,不用再苦苦等著載入報表。

說了這麼多,還是和上面一樣,舉個例子,看FR是如何讓報表自動化,讓打工人擺脫報表折磨的。其實很簡單,只需解決三個難題:

  • 第一步:報表如何取數
  • 第二步:報表如何自動生成,實現報表自動化
  • 第三步:報表完成後,如何自動傳送

第一步:報表如何取數

對於大部分公司來說,生產進度只能人工整理彙總Excel表格,資料亂且雜,報表人的取數工作肉眼可見的困難。這就是為什麼大家在做日報週報的時候,想要的資料取不出來,想填的資料填不進去,費了半天時間整理的一堆報表只能爛在自己手裡。

但用FineReport直連資料庫功能,就可以很好解決這個問題。

簡單來說,就是FineReport在資料庫的支撐下搭建了一個資料中心,想做報表時就可以直接從庫中取數;同理你也可以將其整合到OA系統、ERP系統之中,隨時取數、找數做報表。

除此之外,FineReport還擁有填報功能,資料部門可以根據業務人員提的需求來設計填報模板。業務人員透過設計好的模板錄入資料,資料就會同步到資料庫中。

第二步:報表如何自動生成,實現報表自動化

解決了取數的問題後,我希望我只需要做一次日報,然後將其作為模板,以後再需要時可以直接調出來用。

其實,利用FineReport就可實現這個功能,你可以將製作好的模板儲存在平臺中,再需要製作日報時就可以直接將模板調出來,大大減少重複製作報表的流程和時間,將繁瑣複雜的日報變成再簡單不過的取數填數。

時對於不同的報表適用物件,你可以用FineReport設計出不同型別的模板,比如總部一個模板,分廠一個模板,不同的班組有不同的模板,透過在幾個模板之間設定鑽取關係後就可以實現對企業報表資料的分級把控,需要時就直接呼叫。

同時,我們做日報週報的時候不免要涉及很多資料和專案進展情況,這時候直白枯燥的數字很難直接反映資料情況,而這時候就可以透過FineReport的儀表板、進度條等功能,用圖表來反映生產進度的健康情況,同樣只需要呼叫模板填數就可以。

有了模板,很多人還是會有一個問題,有的業務人員不想用系統錄入資料,還是習慣用excel填報,這種情況該怎麼實現報表自動化呢?

很簡單,FineReport有多種方式來確保在基層的生產資料的錄入,既可以支援固定樣式模板的填報報表,也支援excel模板的直接匯入。

比如,IT人員可以根本業務人員的需要設計填報模板,業務人員只要定期開啟模板填報生產計劃或者生產結果即可;或者IT人員也可以為業務人員設計基於固定EXCEL表格的匯入模板,只需設計好資料庫與模板的表結構,業務人員即可一鍵匯入日常工作中在excel中的資料。

第三步:報表完成後如何自動傳送

一般情況下企業每天的報表需要按時發給領導,但是每次都需要手動上交報表,一旦臨時有事,還要麻煩其他同事幫自己交報表。

這個問題可以用FineReport的定時排程功能解決,在系統設定好定時任務,它會自動按時將做好的報表傳送郵件或者簡訊給檢視報表的人。

總結

我們剛剛講了那麼多,最後我們再回到報表本身看。其實對於大多數企業來說,報表是需要定期製作、釋出的,這就導致我們不得不定期去製作相同的報表。但這樣低效率、高人力成本的做表方式早就被淘汰了。

相反,自動化報表流程不僅可以減少人力、時間成本,還可以讓企業把主要精力放在資料分析上,真正把資料的價值用到位,讓資料推動業務,輔助管理者進行決策,而不是僅僅讓資料的價值停留在手機和郵箱裡

點選“報表”即可免費獲取啟用碼,下載使用~

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

更多精彩內容,按讚我的臉書 IT Value 研討社,獲得24個行業240份企業數位轉型資料喔!等你來看喔 😃

推薦閱讀

什麼是元宇宙、新基建、賽博空間?7個最火科技名詞解釋,都在這裡了

IT報表開發必看:如何搭建領導想要的戰情室,這篇方法論值得收藏

拯救普通人週報焦慮,一個自動化報表工具就能實現

盤點5大高頻移動端場景,你不會用就落後了!(內附模板下載)

--

--