查看完整版本: 在複雜報表面前,我終於放棄了Excel!
頁: [1]

李賢lee 發表於 2019-4-28 04:05 PM

在複雜報表面前,我終於放棄了Excel!

「資料要多久整理好?」
「報表什麼時候出來」
「來,這張報表幫我做個分析」
……
相信這些話,是表哥表姐最不想聽到的「魔咒」吧!

我當初剛大學畢業,作爲一名新手來説,統計資料是每天的工作標配。可別人十幾分鐘就能輕鬆搞定的事情,我常常需要幾個小時才能勉強完成。

剛開始,我以為自己只是不熟練,多做幾次就好了。可悶頭苦練了一個周,我還是全組最慢的那個,每天被催到懷疑人生。
「就差你的了,複製粘上,再統計一下就好啦,怎麼搞得這麼慢!」漸漸地,我察覺到,領導開始質疑我的工作能力了。
我也一肚子苦水啊,好歹我也算半個開發,會寫sql,會java,明明是BI工程師,卻被招來每天忙活Excel這個破軟體,簡直懷疑人生。

如何快速高效的製作企業數據報表呢,請教了很多大大,要麼碼程式碼開發,要麼開源/用現成的報表軟體。

果然用報表軟體是絕佳的選擇,自從部署了FineReport報表後,整個報表開發部,只要敲幾下鍵盤,點幾下滑鼠,就輕鬆地把整個表格順利完成。全過程自動化,視覺化非常酷炫,科技就是生產力啊!

http://www.finereport.com/tw/wp-content/themes/BusinessNews/images/2019/02/tw-190219/2019021902Y.jpg

http://www.finereport.com/tw/wp-content/themes/BusinessNews/images/2019/02/tw-190219/2019021903Y.jpg


這麼好的神器,當然要推薦給大家!

要問什麼是報表工具?那我們先説説什麼是報表。

查一下google……簡單的說,報表就是用表格、圖表等格式來動態顯示資料。可以用公式表示為:「報表 = 多樣的格式 + 動態的資料」。

而報表工具呢?就是幫助使用者做報表的工具,幫助用來展現自己輸入的資料,更多時候是將數據庫中的數據,以客戶想要的方式即報表的形式展現出來。

報表的必要性,應該是不用討論了。只要有企業,就會產生報表,最普通不過的就是財務報表了,還有各種計劃報表,成本核算報表,成本分析報表。無論在政府監管、企業營運還是一般的組織管理模式中,上級的監督考核、下級的彙報請示、平級的協同交流,都需要定時或不定時地傳遞一些報表,然後以這些報表為基礎進行分析統計。

對應到資訊化工程的軟體開發專案中,報表功能也就是必不可少的了。而今天,我們要討論的,是要不要報表工具的問題,也就是用報表工具還是寫程式碼來實現報表,這才是個問題。

對於萬能的程式設計師來說,沒有什麼問題是一百列程式碼解決不了的,如果有,那就再來一百列……只不過,面對翻臉比翻書還快的需求、對外觀樣式的吹毛求疵、越來越複雜的報表格式和內在資料關係、越來越多需要維護的報表數量,尤其還不得不去修改隔壁老王寫的千百萬列程式碼時, 估計千言萬語都會化成一句:專業的事還是讓專業的人去干吧。沒錯,報表工具就是專業的,而且可以專業到讓業務人員實現做報表,甚至構建快速系統。

以一個簡單的例子來講解。
假設我們要做一張羅列所有學生資訊的報表:

http://www.finereport.com/tw/wp-content/themes/BusinessNews/images/2019/02/tw-190219/2019021904Y.jpg

很簡單是不是?讓我們這些程式設計師擼起袖子馬上干,就從熟悉的 java 開始吧……
首先是通過數據源,連接資料庫提取數據。

Source code          
public static void main(String[] args) throws IOException, ParseException{_showTable_(, , , , );}public static DefaultTableModel getTableModel(String driver, String url, String user, String pwd, String tableName){String sql = String._format_(, tableName);String[] colNames = null;Object[][] tabValues = **null**;try{Class._forName_(driver).newInstance();Connection conn = DriverManager._getConnection_(url, user, pwd);Statement stat = conn.createStatement();ResultSet rs = stat.executeQuery(sql);ResultSetMetaData rsmd = rs.getMetaData();if (rsmd != null && rsmd != null){


……省略n列代碼


Source code          
}
valList.add(row);
}
tabValues = new Object[];valList.toArray(tabValues);}
}catch (Exception e){throw new RuntimeException(e.getMessage(), e);}return new DefaultTableModel(tabValues, colNames);}


……省略n+1列代碼

然後就是直接創建各種樣式標籤,以報表樣式展現資料:

//生成表樣式:



Source code          
String styleName = name;if( isSub )
{int subPos = styleName.indexOf( );if ( subPos >...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

rwthjttujk 發表於 2019-5-3 09:17 AM

問一下喔...

免費版有沒有什麼使用限制?

比如說...

用多少天整個軟體就無法開啟?
某些功能不能用?
存好的檔會有浮水印...
...以及其他

李賢lee 發表於 2019-5-16 03:23 PM

rwthjttujk 發表於 2019-5-3 09:17 AM static/image/common/back.gif
問一下喔...

免費版有沒有什麼使用限制?


finereport報表的免費版:

(1).所有插件皆可兔費使用。

(2). Finereport所有功能皆可使用。

沒有時間限制,也沒有浮水印。

但是限制2個user。如需更多那就需要購買商業版本了。商業版本性價比很高,可以根據你需要的功能報價。
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

ttt1234321 發表於 2019-9-28 09:06 AM

實用的軟體!!謝謝大大無私的分享受!!

isp2018ca 發表於 2019-10-6 08:40 PM

實用的軟體!!免費版有使用限制{:38:}<br><br><br><br><br><div></div>
頁: [1]