徐光明
摘要:介紹利用foxtable的數(shù)據(jù)管理和其自帶Excel報表功能,設(shè)計復(fù)雜學(xué)生學(xué)籍卡的制作。
關(guān)鍵詞:foxtable;Excel報表;學(xué)籍卡
中圖分類號:TP317 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)12-0103-01
學(xué)生的學(xué)籍登記信息表(簡稱學(xué)籍卡),記錄的內(nèi)容非常全面,包括了學(xué)生的基本信息(學(xué)號,姓名,性別,出身年月,入學(xué)日期,身份證號,政治面貌,畢業(yè)時間,學(xué)制,層次,所在學(xué)院,班級名稱,專業(yè)名稱,畢業(yè)中學(xué),畢業(yè)論文,評定成績,畢結(jié)業(yè)結(jié)論,電子注冊證號,學(xué)位類別,學(xué)生證書編號,學(xué)生的頭像照片),學(xué)生的家庭基本情況表,(姓名,關(guān)系,工作單位,聯(lián)系電話),在校期間的學(xué)籍異動情況(異動類別,異動原因,處理文號,異動時間),學(xué)生的獎勵情況(獎勵名稱,時間,級別),處分情況(處分名稱,時間,文號)。
學(xué)籍卡內(nèi)容如此廣泛,基本上包含了學(xué)生在校期間的所有信息,以前,都是通過手工抄寫,頭像照片是一個個貼上去。費(fèi)時費(fèi)力,而且容易出錯。即使通過郵件合并,也是無法實現(xiàn)大量數(shù)據(jù)的分學(xué)院,分班級導(dǎo)出報表,在這里,我利用foxtable的數(shù)據(jù)管理和excel模版結(jié)合,基本上分分鐘就搞定以前需要大量時間才能做完的工作。
1 準(zhǔn)備工作
在foxtable里面,主表就是學(xué)生的基本信息表,子表分別是學(xué)生家庭信息表、學(xué)籍異動表、獎勵信息表、處分信息表。表的基本字段內(nèi)容設(shè)置好以后,每張表都需要添加學(xué)號字段,在導(dǎo)入foxtable的時候,需要學(xué)號字段關(guān)聯(lián)主表和子表,以方便提取數(shù)據(jù)。
2 關(guān)鍵設(shè)計步驟
第一步需要設(shè)置好模版格式,使用excel模版輔助設(shè)計器對模版的字段內(nèi)容逐個填充好。注意學(xué)號和[學(xué)號]是不同的。[學(xué)號]這樣的格式代表從數(shù)據(jù)庫表里面提取學(xué)號字段值。
第二步則需要在A2單元格設(shè)置代碼<模版主表,1>,表示細(xì)節(jié)區(qū)的開始行。A27的代碼是<模版主表>,標(biāo)識細(xì)節(jié)區(qū)的結(jié)束行。
A12單元格 代碼是<家庭情況,-3>,表示插入子表家庭情況表里面的數(shù)據(jù),而且只顯示3行內(nèi)容。A15單元格代碼是<學(xué)籍異動,-4>,表示插入子表學(xué)籍異動表里面的數(shù)據(jù),合計產(chǎn)生4行,多余數(shù)據(jù)不顯示。A18代碼是<獎勵,-4>,A21代碼是<處分,-4>。
A13和B13單元格里面是
B12單元格代碼是
J1和J28代碼
J2的代碼<[所在學(xué)院] = “水產(chǎn)學(xué)院”>,表示輸出水產(chǎn)學(xué)院全部學(xué)生的報表。
J3單元格代碼<[&頭像照片,3,3,120,160],表示引用頭像照片,格式是寬度120像素,高度160像素,左邊距3像素,上邊距3像素。
G26單元格的代碼<”打印日期”:&
第三步是隱藏有代碼的行,即第1行,第13行,第16行,第19行和第22行,這樣輸出報表的時候不會產(chǎn)生空白行 ,達(dá)到美觀的效果。
設(shè)計好的模版文件如下圖所示:
上圖所示模版文件,點(diǎn)擊輔助設(shè)計器右下角的預(yù)覽報表就可以產(chǎn)生水產(chǎn)學(xué)院的全部數(shù)據(jù)。如果要單單打印某一個班級的報表,只要修改J2單元格的條件即可。比如<[班級名稱] = “A10管理”>,這樣就可以輸出A10管理班的全部學(xué)生報表。
第四步涉及到打印顯示,比較多的學(xué)生,其父母工作單位地址字符數(shù)很長,也有獎勵名稱一欄字符數(shù)很長,超出模版指定的寬度,需要使用foxtable編程語言,在生成報表時候,統(tǒng)一設(shè)置單元格格式為縮小字體填充。基本代碼如下所示:
Dim Book As New XLS.Book(ProjectPath & "Attachments\學(xué)籍卡.xls")
Dim fl As String = ProjectPath & "Reports\excell.xls"
Book.Build() '生成細(xì)節(jié)區(qū)
Book.Save(fl) '保存工作簿
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(fl)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Dim Rg As MSExcel.Range = Ws.Cells
rg.ShrinkToFit = True ‘縮小字體填充
App.Visible = True
3 結(jié)論
利用foxtable完成復(fù)雜學(xué)生學(xué)籍卡的設(shè)計和打印,那基本上可以將以前幾個月的工作量,壓縮到半個小時就完成的事情。不僅提高了工作效率,準(zhǔn)確性更是有了保障。 這種方法也完全可以應(yīng)用于其它需要批量打印復(fù)雜表格的領(lǐng)域。
參考文獻(xiàn):
[1] 路橋. 基于foxtable(狐表)的分組統(tǒng)計模型設(shè)計[J]. 中國管理信息化, 2012, 15(16): 90-91.
[2] 向蘭宣. 利用word郵件合并和Photoshop批處理完成學(xué)生學(xué)籍卡制作[J]. 消費(fèi)電子, 2013(4): 153-155.