3 excel是外掛程式結構的程式,可以很方便的把功能整合到excel中
比如常見的金山詞霸,或是我寫過的資料匯入程式
這篇文章的位址在
4 如何用excel做介面
excel可以做介面,excel內建常用的工具箱,具備我們程式設計開發的常用控制項。
用toolbox做介面,配合vba指令碼控制演算法,也可做出符合特定行業的應用。
再談點實作方面的內容,如下圖,這是乙個計算機主機**計算程式
開啟這個excel檔案,根據需要選擇不同的配置方案,按回車鍵,系統計算出主機的**。
再來看看這個小應用是如何做出來的。
先在excel中建立如下的**對映關係
這是乙個簡化的例子,我沒有考慮太多的因素。
如上的資料,硬碟以容量來區分**,80g的價錢為160rmb,160g的價錢為220。
處理器,主機板,記憶體的**計算也是同樣的道理。
假設如下的應用情景:使用者開啟這個excel,只需要從列表中選擇硬碟,cpu,主機板,記憶體的
各個配置引數,系統就把**計算好了。
比如上面的,選擇160g硬碟,單核cpu,a2型號的主機板,2g記憶體,excel根據資料對映,計算出該配置的**為1660。
如果用程式的實現方式,我們需要開啟vs ide,新建乙個page或form,拖動幾個dropdownlist或combobox到介面上,
設定它的items集合的值,然後是設計計算方法。
如果放對映值直接硬編碼到程式中,可能的實現是這樣
string cpu=ddlcpu.selectedvalue; // 」單核」;
int price=0;
if(cpu==」單核」)
price=600;
else if(cpu==」雙核」)
price=1000;
這種實現方式可行,但經不起變化,稍微更改一下**,整個程式需要重新編譯和除錯。
我們換一種方式,把價錢放到配置檔案中,比如harddisk.xml檔案是存放硬碟的**
<?xml version="1.0" encoding="utf-8" ?>
把這個檔案讀進乙個hashtable結構中,鍵是name,值是price。
每次計算就去讀取這個xml檔案,根據鍵來取值。
由於這個配置不會輕易改變,系統還考慮應該把它加入到系統快取中,提高執行效率。
也許你還注意到上面中的」小於」字。有時候衡量一件物料的**沒有這麼精確,
通常它只指定乙個範圍,超過指定的範圍**才會變化。比如化學藥水,容積在1l(公升)以內是100rmb,
1l至2l之間的**是140rmb,遇到這種情況,chemical.xml配置檔案應該這樣寫
<?xml version="1.0" encoding="utf-8" ?>
現在我需要購買1.2公升化學藥水,上面的配置檔案很清楚的說明了需要花費140rmb.
如何在程式中實個邏輯,我的做法是設計乙個結構,
struct item
逐行掃瞄chemical.xml檔案,把它的每乙個行資料,填充到乙個item結構,放到hashtable中。
比如,現在需要計算1.2l的藥水的價錢,遍歷一下包含item集合值的hashtable,取出它的item結構
如果1.2是大於等於item的min,並且小於max的值,就取出price值,跳出迴圈。
至此,我已經解釋如何把上面的excel做的主機**計算工具轉換為我們熟悉的c#的做法。
考慮到軟體費用(excel,c#開發用vs ide)和每小時人工費用,相比之下,excel版本的計算工具,
比應用程式的成本要低很多。而兩者達到的目的都是一樣的,都可以實現這個功能。
再分析一下excel版本的主機**計算工具實現的三個細節。
大部分的操作都很簡單,講一下list的製作和公式的做法
選單 data—> validation 彈出對話方塊,選擇list, 指定source即可,如下圖
公式計算 常常會巢狀大量的if語句,如下計算硬碟價錢的公式
=if(b4=b9,c9,if(b4=b10,c10,if(b4=b11,c11,if(b4=b12,c12))))
再把用到的常量和引數隱藏起來,不讓使用者修改,也可把worksheet加密,阻止使用者修改。
最近分析的公司的excel檔案,大量的運用上面我說的技巧,介面設計的也很成熟。
我已經講清楚了它的原理,結論就是excel其實也是乙個很好的管理程式開發工具。
老闆也是乙個工種,也是一種技能
執行力強的員工是手腳的延伸 視野開闊專業的員工是大腦的延伸 老闆的技能是養活這些人 於是老闆要能夠比這些人知道賺錢的方法,看到賺錢的機會,能夠畫出大餅,做出看似不可能或不可思議的決定。因為同樣是看一篇文,其他人看的是精彩,而老闆要看到那些是可以借鑑的,那些是有問題的,那些是可以差異化的,然後根據分析...
WTL 乙個很好用的ToolTip
找到了乙個老外寫的很好用的tooltip,但是有兩個小問題,終於解決了,拿出來和大家分享下。問題1 有時候出現這樣的情況,滑鼠劃上去後立馬彈出提示,然後消失,最後又彈出一次 問題2 提示框彈出後預設只顯示5秒鐘就消失了,這樣時間太短了,提示的內容還沒看完就消失了。解決方法 問題1 m tt.setd...
乙個很好玩的命令 stty
stty命令修改終端命令列的相關設定。語法stty 選項 引數 選項 a 以容易閱讀的方式列印當前的所有配置 g 以stty可讀方式列印當前的所有配置。引數終端設定 指定終端命令列的設定選項。例項在命令列下,禁止輸出大寫的方法 stty iuclc 開啟 stty iuclc 恢復 在命令列下禁止輸...