操作Word试卷的一种算法
2018-03-29谈云康瞿荣华尹小辉
谈云康 瞿荣华 李 娟 尹小辉
四川管理职业学院 四川成都 611732
1.引言
利用网络平台进行在线考试时,经常需要重新对试题进行组织。为了实现自动化组题,多数课题基于传统的数据库组卷系统进行研究。
研究的对象大多数是建立在试题库的基础上通过选题、组题和组卷算法而实现组卷。为了实现对试卷进行程序化编制,本文试验并给出了一种操作Word文档的算法,达到组卷的目的。
2.合并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.结语