?

word文檔格式自動分析方法

2021-06-22 03:32張廣梅朱紅梅
電子元器件與信息技術 2021年3期
關鍵詞:文檔對象自動

張廣梅,朱紅梅

(山東農業大學信息科學與工程學院,山東 泰安 271000)

0 引言

計算機文化基礎是高等教育的基礎課程[1]。Office辦公自動化軟件的使用是計算機文化基礎的重要內容之一。為了更有效的對學生的學習效果進行檢查,計算機文化基礎的考試應經采用無紙化的考試方式進行。針對office軟件的特點,在考試過程中,通常都是給出排版要求,學生根據排版要求對指定的文檔進行排版,最后提交排版之后的文檔。通常情況下,教師根據排版要求對學生提交的文檔進行人工檢查。這樣做不僅工作量大,而且由于每個教師的評分尺度不同,無法客觀公正地對學生的學習效果進行評價。為解決這一問題,很有必要開發office文檔的自動分析系統[2-3],一方面可以大大降低教師的閱卷工作量;同時可以有效地避免因評分尺度不同所造成的學生成績的差異。本文以wod文檔為例,對word文檔自動分析程序中所涉及的相關問題進行了討論。

1 word文檔格式自動分析基礎

1.1 Word對象模型

Word文檔編輯過程中所涉及的每一項內容都是一個對象,這些對象的相互關聯組成了Word中的對象模型[4]。也就是說,在Word文檔中,文檔、對話框、文本框、圖形、圖表甚至應用程序本身都是對象[5],同時,這些對象都有自己的屬性和方法,因此,可通過程序來訪問word文檔中的這些對象,完成文檔格式的自動分析。

1.2 常見的VBA對象及其屬性分析

1.2.1 利用font對象獲取文字的排版格式

Font對象代表指定對象的字符格式。在對office文檔進行排版的過程中,經常需要對指定的文件的格式進行設置。文字格式包括字體、字形、字號、字體顏色、字符間距等。在word文檔進行分析時,要獲取文字的字體設置信息可以通過讀取Font對象的相關屬性完成。表1對Font 對象的相關屬性進行了介紹。

表1 Font 對象的相關屬性

1.2.2 利用ParagraphFormat對象獲取段落的排版信息

段落排版的相關信息存儲在Paragraph對象中。代表整個WORD文檔的Document對象具有Paragraphs屬性,它是文檔中所有Paragraph對象的集合,該集合包含指定文檔、區域或所選內容中的所有段落,該集合中的每一個元素代表了一個Paragraph對象,一個Paragraph對象代表了文檔中一個段落。Paragraph對象具有format屬性,通過讀寫Paragraph 對象的format屬性,可以獲取到一個ParagraphFormat對象。ParagraphFormat對象記錄了段落的所有格式信息。表2列出了ParagraphFormat對象的相關信息。

表2 ParagraphFormat對象的部分屬性

1.2.3 利用Font對象和Sections對象獲取邊框和底紋的排版信息

邊框和底紋的處理也是在word文檔排版過程中的常用的基本操作。邊框和底紋主要包括文字邊框、文字底紋和頁面邊框。文字的邊框和底紋記錄在Font對象的相關屬性中,而頁面邊框記錄在Sections對象的相關屬性中。表3列出了記錄相關排版信息的對象及屬性。

表3 邊框和底紋的屬性列表

1.2.4 利用TextColumns對象獲取文檔的分欄信息

分欄設置的相關信息可以通過TextColumns對象獲得。TextColumns對象是文檔中TextColumn對象的集合。通過訪問Document.Pagesetup.TextColums 的屬性,可以獲取word文檔中的TextColums的對象。表4中列出了TextColumn的屬性,通過讀取這些屬性可以獲取相應的分欄信息。

表4 分欄的屬性列表

1.2.5 利用Dropcap對象獲取首字下沉的相關信息

首字下沉的相關信息存儲在Dropcap對象中。Dropcap對象代表段落中格式為首字下沉的大寫字母。通過訪問文檔對象的Selection.Paragraphs(i).DropCap的屬性可以獲取文檔中的第i個段落的實現首字下沉的Dropcap對象。表5列出了Dropcap對象的相關屬性。

表5 Dropcap對象的相關屬性

1.2.6 利用Shape對象獲取藝術字格式的相關信息

藝術字屬于圖形的一種,藝術字格式信息存儲在Shape對中。該對象可以通過訪問Document對象的Shapes屬性獲得,Shapes屬性是word文檔中所有Shape對象的集合,每個Shape對象對應一個圖形。因此,可以通過Document.shapes屬性獲取文檔中的Shape對象集合。在此基礎上,通過讀取表6列出的屬性,獲取關于藝術字的排版信息。

表6 藝術字的屬性列表

2 文檔排版參數的自動提取

2.1 創建存儲標準答案數據庫

文檔格式的自動分析需要分析程序的支持[6]。為達到自動分析的目的,需要根據文檔的排版要求,需要從標準文檔(標準文檔是指已經按照排版要求完成排版操作的文檔)中將文檔的排版參數提取出來,并以此為依據,用來對學生的考試文檔進行評測。為提高學生文檔格式自動分析的效率,可以先將文檔的排版要求記錄在ACCESS數據庫中,表7類出了關于字體設置的相關信息(針對其他排版要求的數據的存儲方式與下表類似)。

表7 字體信息表

2.2 排版參數的獲取

2.2.1 排版參數的設置

在從標準文檔中提取排版參數之前,首先要指定需要提取的要素。圖1給出了關于文檔中文本的字體等相關排版參數的選擇的操作界面。

圖1 字體參數設置

2.2.2 排版參數的提取

在設置好排版參數之后,接下來就可以從標準文檔中進行參數的提取工作。算法1列出的示例代碼完成排版參數的提取。

算法1 字體信息提取

Dim t As Microsoft.Office.Interop.Word.Document

t = GetObject(“f:標準答案.doc”)

t.ActiveWindow.Selection.Find.Text = Textbox1.text

If t.ActiveWindow.Selection.Find.Execute() Then

select_name = t.ActiveWindow.Selection.Font.Name

Endif

算法1:給出了相關文本的字體信息的提取過程??梢詤⒖忌鲜鲞^程完成排版參數的提取。

2.2.3 排版參數的存儲

為提高文檔格式自動分析的效率,可以將提取到的參數寫入到標準答案數據庫中,為后續分析程序的自動生成準備好數據[7-8]。算法2中的示例代碼完成了向數據庫中寫入排版參數的過程。

算法2:排版參數寫入數據庫

mYpath = “f:文檔ì自動分析.accdb”

cONn = CreateObject(“ADODB.Connection”)

cONn.ConnectionString = “Provider=Microsoft.Ace.OleDB.12.0;Data Source=” & mYpath

cONn.ConnectionString = cONn.ConnectionString& “;Jet OLEDB:Database “

cONn.Open()

Sql = “insert into fonts(text_value) values(‘” & texts & “’)”

cONn.Execute(Sql)

3 格式分析文檔的自動生成

在提取完格式參數之后,接下來可以根據提取到的數據生成格式分析程序。格式分析程序包含以下幾個部分:(1)讀取標準文檔參數數據庫,獲取閱卷參數;(2)利用讀取的閱卷參數,依次分析每個學生的答題文檔,根據分析的結果計算每個知識點的得分,將每個同學的得分情況寫入得分數據庫中;重復執行(2),直到分析完所有學生的文檔。下面對文檔分析程序中的關鍵問題進行討論。

3.1 讀取閱卷參數

對office 文檔的閱卷操作就是檢查學生有無按照要求完成排版操作。根據前面的介紹,在對標準文檔進行分析時,已經將相應的排版信息存儲在數據庫中,因此在閱卷之前,需要讀取ACESS數據庫中存儲的閱卷參數,以此來指導閱卷工作。算法3中的示例代碼展示了讀取ACEESS中的數據庫的過程。

算法3:訪問ACESS數據庫

Dim con As New OleDbConnection

Dim cmd As New OleDbCommand

Dim dr As OleDbDataReader

con.ConnectionString=“Provider=Microsoft.Ace.OleDB.12.0;Data Source=”& mYpath

con.Open()

cmd.Connection = con

cmd.CommandText = Sql

dr = cmd.ExecuteReader()

Dim col As Integer

col= dr.GetOrdinal(“fontname”)

text = dr.GetValue(col)

3.2 生成word文檔格式分析代碼

為完成學生試卷的自動分析,必須將要生成的格式分析代碼以文件的形式進行存儲。為將生成的格式分析代碼寫入文件中,在格式分析程序的生成過程中,首先創建文本流對象,接下來,依次將完成格式分析的代碼寫入這個文件中。由于一場考試中有多人參加,因此,在生成的閱卷程序中,首先要指定存放學生試卷的文件夾,然后,依次讀取文件夾下的每一文件,并從文件中提取需要的格式信息,并將讀取的結果與上面讀到的標準結果進行比較,完成對學生書卷的分析。算法4所示代碼對這一流程進行了展示。

算法4:格式分析程序自動生成

Dim tf As Scripting.TextStream

tf=fso.OpenTextFile(“d: extfile.txt”, Scripting.IOMode.ForAppending, True)

tf.WriteLine(“imports microsoft.office.interop.word”)

tf.WriteLine(“sub main()”) ‘(byval cmdargs()as string)”)

tf.WriteLine(“dim studentfile as Microsoft.Office.Interop.word.Document”)

tf.WriteLine(“studentfile.activewindow.selection.font.name= “)

tf. WriteLine(Font_Name)

4 結語

Office文檔的排版是要求學生掌握的一個基本操作。本文以word文檔排版為例,對如何提取word文檔的格式信息、格式信息的存儲、格式信息的讀寫等問題進行了討論,為有效的生成格式分析程序提供了參考。采用生成的格式分析程序對word文檔進行自動分析可以有效的降低閱卷工作的強度,提高閱卷工作的效率。

猜你喜歡
文檔對象自動
淺談Matlab與Word文檔的應用接口
涉稅刑事訴訟中的舉證責任——以納稅人舉證責任為考察對象
有人一聲不吭向你扔了個文檔
自動捕盜機
攻略對象的心思好難猜
讓小鴨子自動轉身
自動搖擺的“蹺蹺板”
基于RI碼計算的Word復制文檔鑒別
基于熵的快速掃描法的FNEA初始對象的生成方法
關于自動駕駛
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合