『資料處理過濾增益集3.8』新功能「產生相片檢核檔」

這學期新增一項數位學生證業務,要協助五十幾所高國中小製作有悠遊卡功能的學生證,在開學前開了一次會議,會議中有學校反應以往的檢核程式有一個缺點,就是學生的相片檢核檔列印的時候沒有一班同一頁,一頁裏面有其他班級的學生,檢視以前的相片檢核檔的樣式類似下圖,但是所有學生的相片是連續排在頁面中,所以雖然程式有依班級排序,但是因為一頁呈現的人數不一定剛好一班會有其他班的資料,使用者希望一個班的資料在一起,不要混有其他班的資料在其中,否則註冊組必須手動剪裁給各班,這項要求依我的了解應該不會太難,只要報名進行修正就好,在會議中答應各校會請設計檢核程式的軟體公司進行修改。

image

在還沒有得到軟體公司的答覆是否可以修改,離開學已經很接近了,為了避免開天窗,就思考如果單純只是列印學生的相片檢核檔,其實這個功能在以前幫學生進行升學報名的時候,把收來的相片電子檔要印出來給學生檢查是否本為本人已經用『座位表製作增益集』處理過,所以就把以前的程式碼修改做為一個預備方案,不過後來電腦公司有按照需要進行修改,這個預備方案就沒有用上,不過我想其他非新北市的學校註冊組長也許也會用上,所以把它使用的方法分享出來。

我把這個功能加入『資料處理過濾增益集3.8』中[特殊操作]\[產生相片檢核檔]。

image

程式的表單如下:

image

 

要利用此功能產生相片檢核檔首先要建立一個Excel工作簿其中要有一個工作表(例如下工作表一),工作表中必須提供基本的幾個欄位資料,第一列必須是標題列,除學生的基本資料外,其中"相片"這一欄必須是學生資料對應的相片檔名(不需要附檔名,因為在選擇[相片格式]時會自動對應相片的格式),另外要有分割檔案的依據欄位,例如我們要一個班一個檔案,必須要有"班級"這個欄位資料,其他欄位資料主要是要標記相片提供檢核的目的,例如"姓名"或"座號"。

image(工作表一)

 

以下分別將表單上參數說明

1.[相片大下]:此下拉選單提供1吋與2吋的大頭照選項

2.[相片格式]:此下拉選單提供.jpg、.bmp、.png、.gif等檔案格式選擇

3.[輸出版面大小]:此下拉選單提供輸出之檔案版面的選擇,有B5、B4與A4、A5的選擇

4.[輸出檔案格式]:此下拉選單提供.docx、.pdf、.xps選擇

5.[指定分群組欄位]:此參數主要是提供相片輸出檔案內容分割的依據,在學校通常是以班為單位,所以必須在工作表上建立學生班級的欄位,程式會自動進行依此欄位進行排序。

6.[相片資料所在目錄]:指定照片所在目錄

7.[相片檔名資料範圍]:即上述"工作表一"中"相片"那一欄,把產生的資料範圍選起來,程式只會產生選取的範圍部分。

8.[相片標記資料欄位]:這個參數是要加入相片底下的標記,例如"年級"、"班級"、"座號"、"姓名"等,建議不要選擇太多欄位,因為相片底下標記的文字長度與相片寬度有關,2吋相片約提供11個12點字的長度。

讀者可以下載範例,以下表單的參數去操作試試看。

 

image

產生的檔案如下,一個班一個檔案。

image

如何利用『資料處理過濾增益集』分割地址資料?

註冊組開學都要進行學生資料建檔的工作,學生的聯絡地址與戶籍地址是其中一個重要資料,校務行政系統為了方便註冊組建立資料除了提供單筆新增修改的功能,也提供Excel格式的批次匯入,但是比較麻煩的是校務行政系統的Excel格式要求將戶籍地址或通訊地址依照下列欄位分別建立:

戶籍地址-郵遞區號 戶籍地址-縣市(請填入完整的縣市名稱) 戶籍地址-鄉鎮市區(請填入完整的名稱) 戶籍地址-村里(請填入完整的名稱) 戶籍地址-鄰(請填入半形數字) 戶籍地址-住址(包含路巷段號樓等)

雖然我們可以從學生入學管道或會考資料取得大部分高一新生的戶籍地址或通訊地址的電子檔,但是並不會依照上述欄位分割,而是全部在一個欄位如下

新北市中和區安平里130鄰中和路292巷21弄70號1樓
新北市土城區廷寮里136鄰永豐路255巷340號
新北市土城區埤林里350鄰學府路1段826巷40號11樓
新北市土城區頂福里19鄰中央路4段125巷2弄54號
新北市土城區日和里123鄰中央路1段299巷28號一樓
臺北市信義區莊敬路800號30樓
新北市板橋區公館里17鄰文化路1段385巷36號
新北市中和區興南路133巷16弄18號四樓
新北市樹林區柑園里28鄰大雅路303號24樓
新北市板橋區忠孝路10巷81號16樓
新北市板橋區九如里150鄰民享街224號21樓

 

在Excel中有提供『資料剖析』的功能

image

可以用分隔符號或固定的寬度來將地址分割,使用特定的分隔符號是可以用文字來將資料分割,但是沒有辦法只取得我們要的資料。而使用固定寬度分割資料的方法,如果提供資料者有依照地址書寫的順序規則提供,是有機會取得部分正確的資料,例如『縣市』或『鄉鎮市區』。但是因為地址資料是家長或學生提供給學校,經常不是完整的資料,有時會將一些地址內容省略或不按正常書寫順序,所以依照資料固定長度來分割不是很好的選擇,除了切完之後也許部分資料是正確,但是錯誤的部分要檢查出來是麻煩。

所以我在『資料處理過濾增益集3.8』的「正規比對資料過濾」\「工作表資料內容處理」中[用來取代符合篩選資料的字串]參數,新增一個#i#的參數選擇。

image

以下表為例,我們要將A欄的地址資料依序分割出"縣市"、"鄉鎮市區"、"村里"、"鄰"、"住址(包含路巷段號樓等)",然後依序寫入B、C、D、E、F等欄

image

我們在「工作表資料內容處理」表單的參數設定如下

image

解釋一下[用來取代字串的規則]此參數是代表我們要取代的正規比對規則,舉例我們要在B欄寫入縣市資料,所以我們要比對地址資料把縣市資料找出來並用某一個字串來取代它,
"\w{2}市|\w{2}縣"這個比對規則代表的就是比對xx市或xx縣,\w{2}是代表任意兩個字,所以新北市或台北市或彰化縣都符合。

[用來取代浮合篩選資料的字串 ]此參數是用來取代符合[用來取代字串的規則]的字串,例如地址資料中的"新北市"符合篩選規則"\w{2}市",則程式會用[用來取代浮合篩選資料的字串 ]此參數來取代這筆資料,如果[用來取代浮合篩選資料的字串 ]此參數輸入#i#,則代表是用是符合[用來取代字串的規則]規則的字串來取代,舉例地址是:"新北市中和區安平里130鄰中和路292巷21弄70號1樓",則用上述的參數設定處理的最後結果整筆資料會被"新北市"三個字取代,這樣就可以達到將縣市資料分割的目的。

如果要分割"鄉鎮市區"資料寫入C欄,則參數可以如此設定

image

讀者可以自行試試看村里、 鄰、 住址(包含路巷段號樓等)的操作。

範例檔下載