談云康 瞿榮華 李 娟 尹小輝
四川管理職業學院 四川成都 611732
利用網絡平臺進行在線考試時,經常需要重新對試題進行組織。為了實現自動化組題,多數課題基于傳統的數據庫組卷系統進行研究。
研究的對象大多數是建立在試題庫的基礎上通過選題、組題和組卷算法而實現組卷。為了實現對試卷進行程序化編制,本文試驗并給出了一種操作Word文檔的算法,達到組卷的目的。
下面是合并Word文檔中的表格的主要代碼,跳過表頭和空行進行復制:
首先計算表的數目
intTables=docCopy.Tables.Count
'如果文檔中至少有一張表格
Do While intTables>=1
With docCopy.Tables(intTables)'在 intTables表中
'在表格末尾添加新行
For Each rowTable In.Rows
'對每行單元格數組分配空間
intCells=rowTable.Cells.Count
'默認數組的下標從0開始
'DimstrCells(intCells),則聲明了intCells+1個空間的數組
'讀每行中的單元格
For Each celRow In rowTable.Cells
intI=celRow.ColumnIndex
'刪除多余回車符
strCells(intI)=Replace(strCells(intI),ChrW(7),"",1,-1,vbBinaryCompare)
'刪除單元格內結尾字符:
AscW(Right(strCells(intI),1))=7
'設置非空行標志strCells(0)
ElseIf strCells(intI)<>""Then
strCells(0)="NotEmptyLine"
End If
'復制行
If rowLast.Cells.Count '在新行的末單元格寫入復制表格所在的文件名 rowLast.Cells(rowLast.Cells.Count).Range.Text=_ Replace(docCopy.Name,strExtFileName,"",1,-1,vbBinaryCompare) '寫每行中的單元格 For Each celRow In rowLast.Cells '因集合循環的下標從1開始,所以使用 數組索引從1開始較方便 intI=celRow.ColumnIndex '列下標計數器 '注意輸入數據行存儲的數組下標是由數據列數和標志確定的 If intI>UBound(strCells)Then '如果輸入數組中的值已復制完,不再寫入新行中 Exit For End If celRow.Range.Text=strCells(intI) Next celRow '設置格式:不加粗 rowLast.Range.Bold=False End If Next rowTable '復制行 End With intTables=intTables-1 Loop '讀表格的一行 經過試驗,使用這種算法,能得到我們所需要的結果試題。3.結語