2010-07-07

Life in a Day

2010-07-02

Word 與 奇妙的 XML

這次做專案需要生成一些word文件,想說以前有經驗用word另存成XML格式再用取代字的方式做。但這次的文件較之前複雜許多,要取代的欄位特別多並且有圖片需求。
要做的就三個部份
1. 取代文字的方式
2. 圖片要轉成Base64String
    3. 文件本身要加入須被取代的部分

前兩項很好解決,我這次在第三項碰了一鼻子灰~~
因為要取代的文字與圖片實在太多,所以就律訂要取代的文字是用"[數字]"來分別,在測試時只用少許的資料做測試所以都很成功,但一到完整的文件就發現怎麼會找不到[30]之類的錯誤,查看原始XML文件發現雖然在word裡看到是[30]但是在XML文件中"["跟"30"還有"]"中間竟然有其他,所以干擾了取代文字程式,欄位實在太多且夾雜的並非全相同(心想 :要我用手動去校正鬍子都長長了~~),再進一步分析為何到[30]才會發生這種錯誤呢??!!回想一下當初做文件因為中間不小心跳號所以又重編了,造成"[數字]"並非一次完成,所以word就會再增加來指定這次輸入的文字相關屬性造成中間夾雜的(心想 :要我重新一個一個重寫嗎??),但其實有個方法可以很快的解決這問題,就是全部複製然後貼上,這樣那些夾雜的就全部消失了(爺~~~~~萬歲!!!)。
    再來就是要取代圖的部分,原來word中加入的圖都會被轉成 Base64String ,而且不同圖框若加入的是相同圖片word的XML只會有一份資料,而該圖框會指向相同資料部分。所以在做取代文件的時候要先給每個圖框不同的資料來源,這樣轉成XML才可以區分取代的位置。