2009年3月15日 星期日

[替代役] 超不elegant的程式 (下)

為什麼會這麼醜…醜到我不知道該怎麼說明呢?


原因1、其實我是第二次寫C#
雖然想要用java,但是我要用的幾個特殊功能java沒有提供,想說用VB的話…又覺得他過時了~想說順便來試試C#吧?
而且C#與Word是同樣是微軟的產品,支援應該不錯吧?


於是就開啟了這隻程式


 


原因2、c#對word的支援方式很怪~


C#中,要使用WORD的方法是1、先選取一個區域(叫作Range),然後再對這個range做動作
但是因為他range的選擇方式很奇怪…所以選到的位置不見得是自己想要的,我過程我改過了數次


range= word.range(start, end)


range= word.range(start-1, end)


這兩行我改來改去不下3次,而且還常常跑不一樣的結果…我一整個不知道該說什麼~~


 


於是在try and error與寫程式同時並行的結果,我最後寫出了這個超直觀的程式碼~~


 


3、因為每份公文的頁數是不固定的:


可能這份只有2頁,下一份卻長達30頁一類……(可以由for loop看出來,每次程式要跑的次數不同)


 


因此無法使用類似template,來產生word的方式…真的有點殘念


 


4、因為這個產生的word需要有header(而且不是每頁的header一樣)


因此也無法將之弄成網頁………(這個可能有…只是我查不到)


 


5、C#對於word的支援雖然大多數功能都支援到了,但是很多東西都藏得很深


    而且他的文件(msdn)其實編的很不好…有很多東西想找找不到~~還是一直去google看有沒有人寫過類似的code...


    一直複製別人的程式碼,品質就不怎麼好了~


  講到這就不得不推java...其api的介紹真的詳細很多~~


  (不過他的example就沒有word清楚)


 


---


總之總之…這個寫了很久的程式終於結束了


再一開始的時候C#不認得word...上網查,每個人都叫我去下載OXPPIA,O2003PIA,還重安裝了幾次OFFICE,結果最後發現是c#裡面還要Add reference....


然後要加文字方塊時還找到了需要用VS的dll(還好最後有找到VC#用的)


不斷的研究那個Start, end到底有什麼意義…為什麼不能把游標擺過去…


 


一堆又一堆的問題~~總算結束了~~總程式約1500行,但其實技術層面的程式碼-->零


 


只能說這真的是無敵無敵爛的程式了~~也許過幾天整個測試上線圓滿了後,我會來把他改好一點吧?


至少要加一些新資料可以加~~


 


沒有留言:

張貼留言