技術(shù) 點(diǎn)
- 技術(shù)
- 點(diǎn)
- V幣
- 點(diǎn)
- 積分
- 21536
|
本帖最后由 todaynew 于 2016-5-16 09:11 編輯
版友風(fēng)中漫步同志問如何得到如同Excel列的字母列表,恰好最近在一個(gè)MVC嵌入Excel表的項(xiàng)目開發(fā)中也涉及到此問題。由于項(xiàng)目中實(shí)際最多取到AH列,所以函數(shù)寫的相對(duì)簡(jiǎn)單一些。風(fēng)中漫步同志提出要在2000以內(nèi)取字母的組合,這就超過了ZZ(也就是超過了26的2次方),版友盜夢(mèng)同志認(rèn)為比較難處理。其實(shí)這個(gè)問題本質(zhì)上是一個(gè)10進(jìn)制轉(zhuǎn)換為26進(jìn)制,然后取其各個(gè)位數(shù)上的值的問題。所以只要寫出一個(gè)通用的10進(jìn)制轉(zhuǎn)n進(jìn)制的函數(shù)即可。
對(duì)這個(gè)問題版友roych同志認(rèn)為沒什么意義。我對(duì)此不這么看,原因在于我們?cè)谔幚鞥xcel表的列(column)時(shí),有很多時(shí)候需要用戶對(duì)列做出選擇。由于Excel表的列名是字母組合而非數(shù)字,因此從方便用戶的角度來看,提供給用戶選擇的是列名而非數(shù)字要更好一些。否則,用戶需要數(shù)出列名對(duì)應(yīng)的數(shù)字再輸入,那對(duì)用戶來說多少有些麻煩。
解決這個(gè)問題,還有一個(gè)技巧性的問題,那就是呈現(xiàn)多少數(shù)據(jù)給用戶進(jìn)行選擇。一般來說,給用戶的數(shù)據(jù)不宜太多,有十個(gè)八個(gè)就行了。問題是選擇的范圍并非十個(gè)八個(gè),可能有很多,甚至可以假設(shè)為無上下限。這個(gè)情況下就需要通過一些技巧來動(dòng)態(tài)的給用戶提供數(shù)據(jù)。我個(gè)人喜歡的處理是,以用戶的選擇為中間數(shù),以此來得到那些要呈現(xiàn)給用戶的數(shù)據(jù),這樣每次用戶的選擇都改變數(shù)據(jù)呈現(xiàn)的范圍。
在以下示例中,我們假設(shè)用戶需要兩個(gè)組合框來選擇數(shù)據(jù)。其中一個(gè)是年度,一個(gè)是Excel表列名。這兩個(gè)組合框的行來源為不同函數(shù),在組合框的更新后事件中,調(diào)用函數(shù)來得到數(shù)據(jù)的呈現(xiàn)范圍。兩個(gè)組合框處理的基本思路是相同的,也就是說其他類似的組合框均可按這個(gè)思路處理。不同的是,Excel表列名需要依賴一個(gè)十進(jìn)制轉(zhuǎn)換n進(jìn)制函數(shù)來計(jì)算數(shù)據(jù)。
示例:
視圖:
|
本帖子中包含更多資源
您需要 登錄 才可以下載或查看,沒有帳號(hào)?注冊(cè)
x
|