Visual Basic .Net (VB.Net) 程式語言案例學習 (08. 研討會簡報產生器)
Visual Basic .Net (VB.Net) 程式語言案例學習 (08. 研討會簡報產生器)¶
8.1 問題¶
在許多的研討會中,都會請應邀者準備簡報檔,以利研討會的進行,大會基本上會希望採用同樣的格式,讓研討會的簡報看起來有連貫性。這時候就產生了問題,就算將範本寄給應邀者,請應邀者修改並修改或加入自己的內容,但仍舊免不了有意外的發生。因此就有了這個程式的需求,不如制定一個標準格式,依照基本資料自動產生簡報檔,再將簡報檔寄給應邀者,應邀者不用變更格式,繼續增加新的投影片即可,如此一來所有的簡報格式都會是一致的。
8.2 需求¶
表格 8‑1 「研討會簡報產生器」系統目的分析表
版本:1.0 | 要做什麼 | 不要做什麼(不要做不代表不會做) |
---|---|---|
能做什麼 | (第一格:必要項目) | (第二格:次要項目) |
利用資料庫將基本資料存入。 | 將資料庫升級至SQL Server,透過網路讓使用者建立基本資料。 | |
載入基本資料,可透過點選方式將基本資料填入欄位。 | ||
可在產生簡報檔之前,修改欄位內容。 | ||
可透過欄位內容產生簡報檔。 | ||
不能做什麼(不能做代表不需要做) | (第三格:不必要項目) | (第四格:不需要項目) |
設計批次產生簡報檔的功能。 | 將程式設計成網頁,利用ASP.NET與VB.NET設計,讓使用者可以在網頁上編輯基本資料,並自行產生簡報檔。 |
表格 8‑2 「研討會簡報產生器」系統目標分析表
版本: | 重要 | 不重要 |
---|---|---|
優先 | (重) | (急) |
可透過欄位內容產生簡報檔。 | 利用資料庫將基本資料存入。 | |
不急迫 | (輕) | (緩) |
可在產生簡報檔之前,修改欄位內容。 | 載入基本資料,可透過點選方式將基本資料填入欄位。 |
表格 8‑3 「研討會簡報產生器」系統規格表
規格項目 | 規格內容 | 備註 |
---|---|---|
主要功能 | 可透過欄位內容產生簡報檔。 | … |
利用資料庫將基本資料存入。 | ||
使用介面 | 可在產生簡報檔之前,修改欄位內容。 | … |
載入基本資料,可透過點選方式將基本資料填入欄位。 |
8.3 特色¶
特點就是可以透過基本資料,自動產生格式相同的簡報檔,而無需人工製作。
8.4 使用工具¶
語言 | 軟體 |
---|---|
Visual Basic 2005 | MS Visual Studio 2005 .NET、MS PowerPoint、MS Access |
8.5 系統架構¶
在這裡我們將建立簡報檔的部分,設計成一個類別,這樣有助於往後的重複使用。透過這個類別產生物件,我們就可以很簡單的建立簡報檔。因此本程式的關鍵在於這個類別,而程式介面則是次要的問題。如果要發佈成可單獨執行的程式,則須要配合兩個DLL檔,Microsoft.Office.Interop.PowerPoint.dll與Microsoft.Vbe.Interop.dll,如此一來就可以直接執行。當然還有基本資料庫Member.mdb和簡報範本檔TechRays_Prt.pot,但這些是可以依照您的需求而做替換的,倘若您覺得簡報範本不適合使用,隨時都可以修改或置換。在教學檔案就是直接執行的範例,您可以參考看看。
8.6 程式實作¶
‘所有變數必須宣告才能使用 Option Explicit On ‘加入基本參考 Imports System Imports System.Windows.Forms Imports System.Collections.Specialized ‘Form1的類別 Public Class Form1 Inherits System.Windows.Forms.Form ‘宣告簡報檔產生物件 Dim ppt As PPTAutomation ‘產生簡報按鈕被點選事件 Private Sub btnCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreate.Click ‘預設所有欄位皆已填滿 Dim filled As Boolean = True ‘檢查姓名欄位 If (txtName.Text).Trim().Length.Equals(0) Then errorProvider.SetError(txtName, “不能空白。”) filled = False End If ‘檢查年齡欄位 If (txtAge.Text.Trim().Length.Equals(0)) Then errorProvider.SetError(txtAge, “不能空白。”) filled = False End If ‘檢查稱呼欄位 If (txtDesignation.Text.Trim().Length.Equals(0)) Then errorProvider.SetError(txtDesignation, “不能空白。”) filled = False End If ‘檢查區域欄位 If (txtPlace.Text.Trim().Length.Equals(0)) Then errorProvider.SetError(txtPlace, “不能空白。”) filled = False End If ‘檢查電子郵件欄位 If (txtEmail.Text.Trim().Length.Equals(0)) Then errorProvider.SetError(txtEmail, “不能空白。”) filled = False End If ‘檢查組織欄位 If (txtCompany.Text.Trim().Length.Equals(0)) Then errorProvider.SetError(txtCompany, “不能空白。”) filled = False End If ‘倘若資料皆已填滿 If (filled = True) Then ‘宣告字串集合 Dim array As StringCollection ‘建立簡報產生物件 ppt = New PPTAutomation ‘建立字串集合物件 array = New StringCollection ‘將文字欄位內容存入字串集合中 array.Insert(0, txtName.Text) array.Insert(1, txtAge.Text) array.Insert(2, txtDesignation.Text) array.Insert(3, txtCompany.Text) array.Insert(4, txtPlace.Text) array.Insert(5, txtEmail.Text) ‘呼叫簡報產生器 ppt.CreateFile(array) End If End Sub ‘程式初始化載入事件 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ‘宣告並建立資料庫連結物件 Dim objCnn As New OleDb.OleDbConnection ‘宣告資料庫連結字串變數 Dim strCnn As String ‘宣告並建立資料集物件 Dim objDS As New DataSet ‘設定資料庫連結文字 strCnn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source =” & Application.StartupPath & “\Member.mdb” objCnn.ConnectionString = strCnn ‘開啟資料庫 objCnn.Open() ‘建立資料表轉接器 Dim objAD As New OleDb.OleDbDataAdapter(“Select * From Member”, objCnn) ‘將資料表填入資料集 objAD.Fill(objDS, “Member”) ‘設定資料顯示表的資料表名稱 DataGridView1.DataMember = “Member” ‘設定資料顯示表的資料來源 DataGridView1.DataSource = objDS End Sub ‘當資料顯示表的列被選擇時 Private Sub DataGridView1_RowEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter ‘由資料表列中載入資料到所屬的欄位 txtName.Text = DataGridView1.Item(1, e.RowIndex).Value txtAge.Text = DataGridView1.Item(2, e.RowIndex).Value txtDesignation.Text = DataGridView1.Item(3, e.RowIndex).Value txtCompany.Text = DataGridView1.Item(4, e.RowIndex).Value txtPlace.Text = DataGridView1.Item(5, e.RowIndex).Value txtEmail.Text = DataGridView1.Item(6, e.RowIndex).Value End Sub End Class
如圖8-1可見點選上方的基本資料表,就會把該列的資料載入文字欄位中。
圖 8‑1
如圖8-2可見由程式搭配簡報範本檔所自動產生的簡報檔。
圖 8‑2
8.7 修改重點¶
因為產生簡報檔的類別已經完成了,基本上要修改的重點應該是放在架構上,例如:將基本資料升級在SQL Server上,建立網頁,讓使用者可以自行在網頁上建立基本資料,而產生器就可以依照基本資料產生簡報檔。此外,批次產生簡報檔的構想也是很不錯的,如果是大型的研討會,例如:學術年會。就會很需要批次產生簡報檔,而無需人工點選產生按鈕。
8.8 結論¶
其實這支程式是非常的小巧,但卻能夠帶來極大的便利,這是一個好的應用範例。很多應用能夠結合現有的軟體,例如:MS Excel、MS PowerPoint、…等等。都將會是很省時間又有效率的程式,由其MS Office系列使用者廣布全球,幾乎只要是微軟系統就會搭上一套MS Office,而大多數人們也都具備基本的操作能力,因此設計應用程式時,倘若能夠結合到MS Office,您會發現能夠節省許多工夫,而不必為客製化的問題而煩惱,所以基本上現在的商用軟體,大多都能匯出MS Excel、MS Word的檔案,這就是免去過渡客製化的方法之一。
Lai Tai-Yu (賴岱佑)