close

工作需求的關係,我們需要把一些專案資料轉成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. 需額外檔案敘述表格樣式與內容

 

 

arrow
arrow
    全站熱搜

    Vincent 發表在 痞客邦 留言(0) 人氣()