工作需求的關係,我們需要把一些專案資料轉成Word表格,
看在CSV好懂又好讀的份上,這一用就用了好幾年。
但CSV無法自動生產Word表格與說明。且隨著專案的需求越來越多樣化,
又常常需要配合客戶而更改表格欄位,CSV格式就越來越不敷使用。
這篇文章會針對「中等複雜需求」又「不想架設SQL資料庫」的方向下去撰寫。
首先是CSV的部分,
CSV好讀又好寫,幾乎只是沒有格線的表格,新手上路最適合用的格式非他莫屬。
但是資料並沒有結構性,當資料欄位需要異動的時候,必須把CSV丟到Excel,換完欄位再存成CSV。
偏偏工作在Word上的應用,會把相同數值的部分做跨欄置中,一旦需要更換欄位的時候,工程非常浩大。
況且,CSV資料如果沒有利用首欄/首列去宣告名稱的話,
檔案內容就是一堆沒有經過整理的資料,外人無法輕易看懂。
雖然是總總的不方便,但因為好讀又簡易,所以直到現在都還在用呢!
因為總總的不適合,只好 選擇分手 另尋格式。
過程中考慮了Conf格式和XML格式。
Conf格式是一種Section/Key/Value的格式,從CSV的二維陣列形式改成具有單層結構的樣式。
(一個Section 可以擁有多個Key,但一個Key只能擁有一個Value)
單層結構的形式可以解決很多二維資料無法解決的問題,
資料可以帶有名字、區塊,在應用上也更加的方便。
而且Conf的可讀性更高,每一個變數也帶有自己的名字,很容易就可以了解文件的結構與內容。
但如果面對複雜的分類、屬性標籤等,Conf的格式變會手足無措。
且系統必須事先知道Section與Key的名字,才有辦法讀取資料。
Conf非常適合用在設定集(Porperty Settings)等簡易格式敘述。
但因為案件需要的複雜度更高,因此Conf也無法滿足我的需求。
為了追求更高的層次,我探訪了曾經參加過的大型專案,進而發現了XML格式的優點。
(雖然大型且多人專案,多偏好使用SQL,但目前以不須額外架設主機為主要考量)
XML的使用難度比較複雜,但其資料結構屬於樹狀分類(類似常見的資料夾/子資料夾./.../資料之儲存方式)
且XML是以Node為單位,不須事先知道節點名稱,
只需要使用"Get Next Node"、"Get Child Node"等函式即可讀取節點。
除此之外,XML格式還廣為眾多開發平台使用,
各開發平台的支援度也很高,因此在未來跨部門、跨平台上更具有優勢。
更有趣的是Word可以透過Open XML來編輯,
更省去了先前採用CSV時,還需要另一隻程式來轉換成Word的操作問題。
至於表格順序更換的問題,對XML來說只需要更換節點呼叫的名稱順序就好,不需要修改檔案內容。
但XML也不是天下萬能,有過檔案分類經驗的人就知道,XML的樹狀分類是一種層級式分法,
如果今天有筆資料適合的位置不只一種的時候,資料位置就會模糊,
「系統分類」一旦失效,必須靠「人為分類」去決定資料的位置時,
未來使用者在資料搜尋上就會出現疑惑與困難,因此如何制定良好的系統分類是XML開發者的重大難題。
還好,目前的專案資料不至於太過複雜,且共同開發人數少,
因此只要向大家宣告好資料的位置與定義即可。
此外,將XML轉換成Word需要另一份「格式定義」檔案,來產生OPpen XML的編輯規則,
表面上來說會多一份檔案,但實際運用時卻可以用同一套XML Tool即可,省去跨軟體的問題。
※歸納總結如下
我的需求:
1. 需要具有資料結構存檔方式
2. 需要任意的變換格式
3. 需要將存檔內容分享給非專案開發人員
4. 不想另外架設SQL主機
CSV優點:
1. 平鋪直敘,平易近人
2. 檔案處理直觀
3. 可結合Excel快速應用
CSV缺點:
1. 資料無結構性,需額外定義名稱、屬性等
2. 資料順序固定,不易更換
3. 非專案開發人員不易理解
CONF優點:
1. 資料具有單層結構,名稱、區塊定義
2. 平台通用性高
3. 觀看時理解快速
CONF缺點:
1. 資料僅具有單層結構,無法面對多層結構
2. 需事先知道Section與Key的名稱
3. 需額外檔案敘述表格樣式與內容
XML優點:
1. 樹狀多層結構,可儲存多層次資料
2. 與Offiece系列可用Open XML直接編輯
3. 無須事先知道節點名稱
4. 多平台支援,跨平台難易度低。
XML缺點:
1. 開發及儲存分類需經過嚴密規劃
2. 無法處理高複雜度的多重屬性資料
3. 需額外檔案敘述表格樣式與內容
留言列表