張春雷
(山東英才學院,山東 濟南 250104)
作為信息化系統的重要組成部分,數據收集、數據處理和格式輸出是企事業單位日常辦公管理中的三個重要環節[1]。其中,數據收集,近幾年已經發展出了非常成熟的市場產品,如:問卷星、騰訊文檔、金山文檔等,但數據處理和格式輸出一般分別用Excel 和Word進行處理。Excel作為進行數據處理的主流的辦公軟件,很多情況下,都可以作為一個小型數據庫,存儲各種原始數據,并能夠進行匯總、計算、篩選等數據處理;若要對這些數據進行排版和打印,通常需要用Word 文檔以特定的組織形式來完成[2]。如何將二者進行無縫銜接,更高效地對數據進行處理和展示,相關研究較少,更沒有成熟的產品。
本文以日常辦公使用最多的Office辦公軟件為基礎進行二次開發,提出了一種以Word 模板為格式輸出報表,以Excel為數據處理和存儲工具,設計了一種Excel通用報表打印插件,降低了報表設計的難度,使得報表設計工作可以由程序開發人員交給軟件使用人員,降低了報表設計門檻,減輕了程序設計人員的工作量。
因近幾年在線數據采集的互聯網產品的成熟,我們可能會經常使用在線表格收集數據,或通過各種業務系統導出數據,這些數據往往是以Excel 的形式存在的。為了更好地使用這些數據,可能會需要將這些數據以各種不同的排版格式打印出來。如果僅僅依靠粘貼、拷貝,一是工作量大,二是也容易出錯;如果開發相應的報表系統,又會因為報表格式沒有統一的樣式,開發工作量同樣也巨大。因此,在完成了原始數據的采集、匯總的第一步后,通常還需要將其按照特定要求,轉為符合指定格式要求的文檔,方便歸檔和打印。
常用報表開發設計工具把報表在形式上分解成四個部分:標題區、表頭區、表體區和表尾區,然后對每個部分采用逐個定義的方法,操作煩瑣、專業性強,難以滿足用戶定制報表格式及臨時報表生成的要求[3]。
根據報表內容是否變化,本文將報表設計分解為兩部分,一是報表格式的設計,這一部分主要包括標題、頁眉、頁腳、表頭等在不同場景下不會變化的元素,主要依靠Word 功能實現;另一部分是報表數據,這一部分主要包括動態變化的數據、匯總信息等,在設計好的報表中,在報表中需要輸出數據的位置插入書簽,如圖1 所示,書簽名對應Excel 表格中列的標題名。

圖1 Word中的插入【書簽】功能
利用Excel 文檔進行數據處理,Word 文檔進行報表格式的設計后,可以使用Microsoft Word 的“郵件合并”功能,實現將Excel 的表格數據批量地轉換為Word 報表[4]。Excel 表的一行對應一個報表,Excel 表所有記錄對應整份報表。
某學院要為某專業的畢業生進行畢業論文答辯,需要打印答辯成績表,從“大學生畢業設計(論文)管理系統”中導出學生信息如下,包括題目、學生姓名、學號、班級、指導教師、職稱等字段信息,文件格式是Excel文件,如圖2所示。

圖2 Excel報表打印數據
1)開始郵件合并
打開Word 模板,選擇【郵件】→【開始郵件合并】→【信函】按鈕,如圖3所示。
2)選擇數據源
用鼠標單擊下拉列表【選擇收件人】,然后選擇【使用現有列表】菜單項。在“選擇數據源”窗口中,找到存儲“圖2 數據”的Excel 文件,確認;然后在圖4 所示的界面中選擇“答辯成績表”工作表,單擊【確定】按鈕。

圖4 選擇“數據源”界面
3)插入合并域
將光標置于插入點處,單擊工具欄菜單的【插入合并域】,從彈出的列表中選擇相對應的字段插入,對每一插入點,都需要重復執行這一操作,如圖5所示。

圖5 “插入合并域”界面
4)生成合并文檔
用鼠標單擊【郵件】→【完成并合并】→【編輯單個文檔】→【全部】→【確定】按鈕,便可將Excel表格數據轉換成Word模板樣式的本次參加答辯學生的預填寫完相關內容的答辯成績表。
從前面的介紹可以看出,雖然Word 的“郵件合并”功能強大,但操作步驟煩瑣,對使用人員要求較高,不易掌握,本文利用Visual Studio 2022 對Excel 進行二次開發,將Word 的“郵件合并”功能集成進Excel插件,簡化了使用“郵件合并”的步驟,降低了使用門檻,并且插件還具有Word 模板的集中管理和分發的功能,將Word模板的制作和插件的使用分開,進一步降低了最終插件使用人員的技術要求。
VSTO(Visual Studio Tools for Office)是VBA 的替代,使得開發Office 應用程序更加簡單[5],是微軟推出的.NET 環境下Office 應用程序開發包[6]。VSTO 還提供了增強的Office 對象,可以用它們來編程。可以利用VSTO增強Excel的功能,如添加.NET控件,然后把數據直接綁定到控件上。
利用VSTO可以很容易地擴展Excel的功能,實現將Excel數據填充到Word報表模板中的功能,界面如圖6所示。

圖6 Excel功能擴展界面
打開Visual Studio 2022,選擇【新建】→【項目】,彈出如下的“創建新項目”界面,在右側選擇“Excel VSTO外接程序”,點擊【下一步】,即可創建一個新的VSTO項目。
在新創建的VSTO項目中可以創建新的Excel“功能區”以實現Excel 功能的拓展,“圖6 Excel 功能擴展界面”中【輸出到Word】功能按鈕就是利用Word 對象的MailMerge 對象,程序化地實現Word的郵件合并功能,其邏輯流程如圖7所示。

圖7 輸出到Word流程圖
在圖6中點擊【Word報表】右下角擴展按鈕,可以彈出如圖8 所示界面的對話框,該對話框可實現對Word報表模板的上傳、下載管理等管理功能。

圖8 報表插件的擴展功能
借助VSTO平臺所提供的功能,定制和擴展了Excel應用程序的功能,實現了以下3個方面的功能。
1)報表模板設計
利用WPS 或Word 等辦公軟件,根據具體的業務需求定制報表模板,設置報表靜態格式信息,然后,在適當的位置插入標簽標記,編輯其屬性。
2)上傳模板
用戶將制作好的報表Word 模板利用Excel 插件上傳到數據庫中,可以對上傳的模板進行替換、刪除等操作。
3)生成Word報表
打開整理好的Excel數據,利用插件擴展程序,根據選定的Word 模板,生成下載填充完數據的Word文件。