2010年10月12日 星期二

利用 Regex.Replace 的 MatchEvaluator 委派進行樣板字串置換

Regular Expression 真的很讚!尤其是在 .NET 中使用 Regex 物件時,你會感覺到非常幸福,不光是支援的中介符號和語法完整 (比較過 Javascript 的 Regular Expression 就知道),連 Regex.Replace 都有特別犀利的地方。

我們在程式寫作的時候的時候,偶爾會遇到需要處理樣板的情況,例如:

Hi! XXX您好,您月的贍養管理費未繳,請盡速繳納...

2010年10月10日 星期日

使用 NPOI 在匯出的 Excel 檔中逐列內嵌圖片

相信很多人都有使用 NPOI 匯出 Excel 工作表的經驗了,這次來分享一下在 Excel 中內嵌圖片的範例。

在分享的案例中,我將使用 ASP.NET MVC / C# 利用 Google 搜尋圖片的功能,將關鍵字搜尋到的圖片,導出至 Excel 工作表中的每一列,見圖如下:

image


匯出的 Excel 內容為搜尋到的每張圖片,不過我沒將圖片完整輸出,而是產生縮圖後才輸出。

懶人的 VBA 程式寫作法

由於某個衝動的承諾,最近再次接觸到 VBA (Visual Basic for Application) 程式碼,對 Excel 工作表進行客製化。雖然需求挺簡單的,程式碼也不多,可是寫 VBA 這件事對我來說,並不是像寫 C#/.NET 一樣容易遇上,再加上 VBA 中很重要的 Office Object Model 還挺複雜的,小弟實在沒辦法塞太多 Office Object Model 的東東在腦子裡,這時候要靠文件嗎?可能一個小小的需求就會查到我天昏地暗,寫不下去…

所以在這邊分享一個小方法,能讓你快速的使用 VBA 完成你的工作,懂得一些 VB 的邏輯與控制結構語法即可,關於 Office Object Model 就借助工具幫忙。

2010年10月1日 星期五

離開 LINQ 的 Expression Tree (一)

話說 .NET Framework 在 3.5 發布以後出現的 LINQ,真令人驚豔!這傢伙威力的強大相信大家早有體會了,而 expression tree (運算式樹) 是在 LINQ 中是非常重要的元素,其重要性看 namespace 就能知道 (System.Linq.Expressions)。

Expression tree 自此之後開始快速欺凌擴展 .NET 程式設計師的視野,應用之廣泛像是 ASP.NET MVC 2 中開始提供在強型別 View 中應用 lambda 運算式 (lambda 也是一種 expression tree) 來作為舊語法無法支援 IntelliSense、編譯時期檢查和 refactoring support 的取代品(強烈建議使用),可參考 ScottGu’s Blog - ASP.NET MVC 2: Strongly Typed Html Helpers 這篇文章,相信有經驗的你很快的可以分辨出孰優孰劣。

我自己則是應用 expression tree 在推論引擎的實作上,先提一下推論引擎。前一段時間為了實作規則庫推論引擎(專家系統的一種分支),花了一段時間研究,這種系統的特性是:一個規則庫(Rule Base 或 Knowledge Base)、工作記憶體(Working Memory)與推論引擎(Inference Engine),架構大致如下: