Skip to main content

Visual Basic .Net (VB.Net) 程式語言案例學習 (08. 研討會簡報產生器)

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可見點選上方的基本資料表,就會把該列的資料載入文字欄位中。

image.png
圖 8‑1

如圖8-2可見由程式搭配簡報範本檔所自動產生的簡報檔。

image.png
圖 8‑2

8.7 修改重點

因為產生簡報檔的類別已經完成了,基本上要修改的重點應該是放在架構上,例如:將基本資料升級在SQL Server上,建立網頁,讓使用者可以自行在網頁上建立基本資料,而產生器就可以依照基本資料產生簡報檔。此外,批次產生簡報檔的構想也是很不錯的,如果是大型的研討會,例如:學術年會。就會很需要批次產生簡報檔,而無需人工點選產生按鈕。

8.8 結論

其實這支程式是非常的小巧,但卻能夠帶來極大的便利,這是一個好的應用範例。很多應用能夠結合現有的軟體,例如:MS Excel、MS PowerPoint、…等等。都將會是很省時間又有效率的程式,由其MS Office系列使用者廣布全球,幾乎只要是微軟系統就會搭上一套MS Office,而大多數人們也都具備基本的操作能力,因此設計應用程式時,倘若能夠結合到MS Office,您會發現能夠節省許多工夫,而不必為客製化的問題而煩惱,所以基本上現在的商用軟體,大多都能匯出MS Excel、MS Word的檔案,這就是免去過渡客製化的方法之一。

image.png
Lai Tai-Yu (賴岱佑)

Popular posts from this blog

Python 日期與時間的處理

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Python 日期與時間的處理

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (10. 條碼列印程式)

Image

寫作:波蘭文學習之旅:1-1. 波蘭文字母與發音(注音版)

Image

數位影像處理:最佳化處理策略之快速消除扭曲演算法

Image

用10種程式語言做影像二值化(Image binarization)

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (04. 人事考勤管理系統)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (06. 題庫測驗系統)

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (11. 生產線拍照程式)

Image

Visual Basic 6.0 (VB6) 程式語言案例學習 (07. 收據列印程式)

Image

Visual Basic .Net (VB.Net) 程式語言案例學習 (03. 場地預約系統)

Image