李偉堅(Excel催化劑):Excel離線生成詞雲圖
- 2019 年 11 月 29 日
- 筆記
在數據分析領域,詞雲圖已經成為在文本分析中裝逼的首選圖表,大家熱烈地討論如何在Python上做數據分析、做詞雲圖。
數據分析從來都是Excel的主戰場,能夠讓普通用戶使用上的技術才是最有價值的技術,一個人悶騷地寫Py代碼自嗨個詞雲圖,不是筆者想要的最終效果。
所以把詞雲圖的製作能力下放到Excel普通用戶手裡,就是Excel催化劑想做的事情,幸好辛苦找尋,仍然能找到一個不錯的輪子,在此向大家分享一下。
具體代碼
一樣地可從Nuget中獲取到這個輪子CloudConvert

詞雲圖輪子CloudConvert
同樣地,在Excel環境中,一個最大的優勢是可以和用戶進行交互,用簡單窗體,讓用戶確認數據來源和生成過程中的一些配置信息。

用戶交互窗體
核心代碼如下:
private Image GetImageFromSrcWords() { int.TryParse(this.txtPicWidth.Text, out var width); int.TryParse(this.txtPicHeight.Text, out var height); if (Width == 0 || height == 0) { throw new Exception("圖片的高度或寬度設置有誤,請填寫正確的正整數的高度和寬度值"); } Image maskImage = null; string[] imgExts = { ".jpg", ".png", ".jpeg" }; string maskPath = txtMaskPath.Text; if (File.Exists(maskPath) && imgExts.Contains(Path.GetExtension(maskPath).ToLower())) { maskImage = Image.FromFile(maskPath); if (Path.GetExtension(maskPath).ToLower() == ".png") { var bitmap = new Bitmap(maskImage.Width, maskImage.Height); bitmap.SetResolution(maskImage.HorizontalResolution, maskImage.VerticalResolution); var g = Graphics.FromImage(bitmap); g.Clear(Color.White); g.DrawImageUnscaled(maskImage, 0, 0); maskImage = bitmap; } } //maskImage.Save(@"F:mask.jpg"); var wc = new WordCloud(width: width, height: height, mask: maskImage, allowVerical: true, fontname: this.cmbFonts.SelectedItem.ToString()); Dictionary<string, int> wordInfos = GetWordInfos(); return wc.Draw(wordInfos.Keys.ToList(), wordInfos.Values.ToList()); }
這個輪子可以有背景圖功能maskImage,但這個圖片貌似只能是一些純黑的圖標文件,其他文件識別不出來,但不是十分裝逼找個喬布斯人像時,也夠用,在圖標庫網站上下載一些純黑的圖標文件即可使用
同樣地, 這個輪子貌似對於詞的數量太少時,會出錯,生成失真,明明頻次高的字也不見得顯示大,所以要告訴用戶,詞雲圖真的要在真實環境,處理大量文字的詞頻識別時才有效,幾個詞也沒必要用詞頻圖,直接條形圖即可。
結語
在.Net的世界,資源也不比Python、Java這些少多少,對於普通開發者來說,沒必要非要追那些看不起來多麼熱門的東西,在微軟系裏面,也有享受不盡的資源,如OFFICE,這個可以其他語言羨慕得很的一個大輪子。用好OFFICE現有功能+補充部分外界的熱門資源,普通開發者也可以玩出新花樣。
技術交流QQ群
QQ群名:Excel催化劑開源討論群, QQ群號:788145319

Excel催化劑開源討論群二維碼
關於Excel催化劑
Excel催化劑先是一微信公眾號的名稱,後來順其名稱,正式推出了Excel插件,插件將持續性地更新,更新的周期視本人的時間而定爭取一周能夠上線一個大功能模塊。Excel催化劑插件承諾個人用戶永久性免費使用!
Excel催化劑插件使用最新的布署技術,實現一次安裝,日後所有更新自動更新完成,無需重複關注更新動態,手動下載安裝包重新安裝,只需一次安裝即可隨時保持最新版本!
Excel催化劑插件下載鏈接:https://pan.baidu.com/s/1Iz2_NZJ8v7C9eqhNjdnP3Q

聯繫作者

公眾號
取名催化劑,因Excel本身的強大,並非所有人能夠立馬享受到,大部分人還是在被Excel軟件所虐的階段,就是頭腦里很清晰想達到的效果,而且高手們也已經實現出來,就是自己怎麼弄都弄不出來,或者更糟的是還不知道Excel能夠做什麼而停留在不斷地重複、機械、手工地在做着數據,耗費着無數的青春年華歲月。所以催生了是否可以作為一種媒介,讓廣大的Excel用戶們可以瞬間點燃Excel的爆點,無需苦苦地掙扎地沒日沒夜的技巧學習、高級複雜函數的燒腦,最終走向了從入門到放棄的道路。
最後Excel功能強大,其實還需樹立一個觀點,不是所有事情都要交給Excel去完成,也不是所有事情Excel都是十分勝任的,外面的世界仍然是一個廣闊的世界,Excel只是其中一枚耀眼的明星,還有其他更多同樣精彩強大的技術、工具等。*Excel催化劑也將借力這些其他技術,讓Excel能夠發揮更強大的爆發!
關於Excel催化劑作者
姓名:李偉堅,從事數據分析工作多年(BI方向),一名同樣在路上的學習者。 服務過行業:零售特別是鞋服類的零售行業,電商(淘寶、天貓、京東、唯品會)
技術路線從一名普通用戶,通過Excel軟件的學習,從此走向數據世界,非科班IT專業人士。 歷經重重難關,終於在數據的道路上達到技術平原期,學習眾多的知識不再太吃力,同時也形成了自己的一套數據解決方案(數據採集、數據加工清洗、數據多維建模、數據報表展示等)。
擅長技術領域:Excel等Office家族軟件、VBA&VSTO的二次開發、Sqlserver數據庫技術、Sqlserver的商業智能BI技術、Powerbi技術、雲服務器布署技術等等。
2018年開始職業生涯作了重大調整,從原來的正職工作,轉為自由職業者,暫無固定收入,暫對前面道路不太明朗,苦重新回到正職工作,對Excel催化劑的運營和開發必定受到很大的影響(正職工作時間內不可能維護也不可能隨便把工作時間內的成果公佈於外,工作外的時間也十分有限,因已而立之年,家庭責任重大)。
和廣大擁護者一同期盼:Excel催化劑一直能運行下去,我所惠及的群體們能夠給予支持(多留言鼓勵下、轉發下朋友圈推薦、小額打賞下和最重點的可以和所在公司及同行推薦推薦,讓我的技術可以在貴司發揮價值,實現雙贏(初步設想可以數據顧問的方式或一些小型項目開發的方式合作)。
技術交流QQ群
QQ群名:Excel催化劑開源討論群, QQ群號:788145319

Excel催化劑開源討論群二維碼
關於Excel催化劑
Excel催化劑先是一微信公眾號的名稱,後來順其名稱,正式推出了Excel插件,插件將持續性地更新,更新的周期視本人的時間而定爭取一周能夠上線一個大功能模塊。Excel催化劑插件承諾個人用戶永久性免費使用!
Excel催化劑插件使用最新的布署技術,實現一次安裝,日後所有更新自動更新完成,無需重複關注更新動態,手動下載安裝包重新安裝,只需一次安裝即可隨時保持最新版本!
Excel催化劑插件下載鏈接:https://pan.baidu.com/s/1Iz2_NZJ8v7C9eqhNjdnP3Q
取名催化劑,因Excel本身的強大,並非所有人能夠立馬享受到,大部分人還是在被Excel軟件所虐的階段,就是頭腦里很清晰想達到的效果,而且高手們也已經實現出來,就是自己怎麼弄都弄不出來,或者更糟的是還不知道Excel能夠做什麼而停留在不斷地重複、機械、手工地在做着數據,耗費着無數的青春年華歲月。所以催生了是否可以作為一種媒介,讓廣大的Excel用戶們可以瞬間點燃Excel的爆點,無需苦苦地掙扎地沒日沒夜的技巧學習、高級複雜函數的燒腦,最終走向了從入門到放棄的道路。
最後Excel功能強大,其實還需樹立一個觀點,不是所有事情都要交給Excel去完成,也不是所有事情Excel都是十分勝任的,外面的世界仍然是一個廣闊的世界,Excel只是其中一枚耀眼的明星,還有其他更多同樣精彩強大的技術、工具等。*Excel催化劑也將借力這些其他技術,讓Excel能夠發揮更強大的爆發!
關於Excel催化劑作者
姓名:李偉堅,從事數據分析工作多年(BI方向),一名同樣在路上的學習者。 服務過行業:零售特別是鞋服類的零售行業,電商(淘寶、天貓、京東、唯品會)
技術路線從一名普通用戶,通過Excel軟件的學習,從此走向數據世界,非科班IT專業人士。 歷經重重難關,終於在數據的道路上達到技術平原期,學習眾多的知識不再太吃力,同時也形成了自己的一套數據解決方案(數據採集、數據加工清洗、數據多維建模、數據報表展示等)。
擅長技術領域:Excel等Office家族軟件、VBA&VSTO的二次開發、Sqlserver數據庫技術、Sqlserver的商業智能BI技術、Powerbi技術、雲服務器布署技術等等。
2018年開始職業生涯作了重大調整,從原來的正職工作,轉為自由職業者,暫無固定收入,暫對前面道路不太明朗,苦重新回到正職工作,對Excel催化劑的運營和開發必定受到很大的影響(正職工作時間內不可能維護也不可能隨便把工作時間內的成果公佈於外,工作外的時間也十分有限,因已而立之年,家庭責任重大)。
和廣大擁護者一同期盼:Excel催化劑一直能運行下去,我所惠及的群體們能夠給予支持(多留言鼓勵下、轉發下朋友圈推薦、小額打賞下和最重點的可以和所在公司及同行推薦推薦,讓我的技術可以在貴司發揮價值,實現雙贏(初步設想可以數據顧問的方式或一些小型項目開發的方式合作)。