APP下载

操作Word试卷的一种算法

2018-03-29谈云康瞿荣华尹小辉

成功 2018年11期
关键词:数组单元格表格

谈云康 瞿荣华 李 娟 尹小辉

四川管理职业学院 四川成都 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.结语

经过试验,使用这种算法,能得到我们所需要的结果试题。

猜你喜欢

数组单元格表格
《现代临床医学》来稿表格要求
JAVA稀疏矩阵算法
《现代临床医学》来稿表格要求
流水账分类统计巧实现
JAVA玩转数学之二维数组排序
玩转方格
玩转方格
统计表格的要求
浅谈Excel中常见统计个数函数的用法
Excel数组公式在林业多条件求和中的应用