基于C#的Word 文档自动导出模块的设计与实现
摘要:该文运用书签技术,在Microsoft.NET开发平台上利用C#语言实现Word文档的自动导出模块的设计。在试题库随机组卷抽卷系统中使用该模块,达到了比较满意的效果。
关键词:C#;Word文档;自动导出模块;书签
中图分类号:TP311文献标识码:A文章编号:1009-3044(2013)33-7449-04
1概述
试题库随机组卷抽卷系统的核心功能就是自动生成试卷和答案,通过Word对象模型编程可以比较完善地实现不同要求的试卷格式的输出,采用灵活的组卷技术,可以大大减轻人工出卷的工作量。实现Word文档操作的程序设计语言有很多,文献[1]主要采用Delphi来实现。文献[2-4]是用VC++来实现的。文献[5-6]是用VBA来实现的,该文运用Word书签技术,使用C#语言实现Word文档的自动导出模块,探讨该模块设计与实现中的关键技术及其在试题库随机组卷抽卷系统应用。
2Word自动化对象
2.1Word对象模型
Word提供了庞大而复杂的对象模型。如图1所示。
Word对象模型中似乎有许多重叠。例如,Document和Selection对象都是Application对象的成员,但是Document对象还是Selection对象的成员。Document和Selection对象都包含Bookmark和Range对象。存在重叠是因为您可以通过多种方式来访问相同类型的对象。
2.2五种对象
Word对象模型的对象主要有五种类型,它们分别是Application对象,Document对象、Selection对象、Range对象和Bookmark对象。
1)Application对象
Application对象表示Word应用程序,是其他所有对象的父级。它的所有成员通常作为一个整体应用于Word。可以使用该对象的属性和方法来控制Word环境。
2)Document对象
Document对象是Word编程的中枢。当打开文档或创建新文档时,就创建了新的Document对象,该对象被添加到Word的Documents集合中。焦点所在的文档叫做活动文档,由Application对象的ActiveDocument属性表示。
3)Selection对象
Selection对象表示当前选择的区域。在Word用户界面中执行某项操作(例如,对文本进行加粗)时,应首先选择或突出显示文本,然后应用格式设置。Selection对象始终存在于文档中。如果未选中任何对象,它表示插入点。此外,它也可以是不连续的多个文本块。
4)Range对象
Range对象表示文档中的一个连续的区域,由一个起始字符位置和一个结束字符位置定义。Range对象的数量并不局限于一个。您可以在同一文档中定义多个Range对象。
5)Bookmark对象
文档中的Bookmark是控制文档中的文本的最容易的方法,在这一点上它类似于Windows窗体上的文本框控件。Bookmark对象表示文档中同时具有起始位置和结束位置的连续区域。书签用于在文档中标记一个位置,或用作文档中的文本容器。Bookmark对象可以小到只有一个插入点,也可以大到整篇文档。Bookmark与Range对象的不同之处在于它可以在设计时命名书签,并且Bookmark对象随文档一起保存,因此当代码停止运行或文档关闭时,它不会被删除。
3实现
在试题库随机组卷抽卷系统中所设计的试题本来有一定的格式,按.rtf格式保存为文件。在此基础上,在Word相应的位置插人书签(Bookmark),书签的作用是将程序中想要输出变量的值带入到模板中,模板中的书签名字一定要与程序中的一致。
3.1模板
设计模板是为了避免反复输入相同的信息或做重复的格式修改。创建自定义模板的方法如下:新建一个空白的Word文档,在文档中添加相关信息,设置好要求的格式,将这些作为模板的静态文本。对于需要动态改变的部分,则在相应的位置插入书签,并设置书签变量。然后将所做的Word文档以.dot的形式保存。这样就完成了模板的创建。
3.2C#程序通过模板自动创建word文档
第一步,制作模板
1)新建一个文档
2)在相应位置插入书签;将鼠标定位到要插入书签的位置,点击"插入">"书签",弹出对话框,输入书签名,点击"添加"按钮。
3),保存模板,命名为"试卷.dot"和"答案.dot"。
第二步,设置项目中的引用
1)右击"解决方案资源管理器"中的项目目录下的"引用",选择"添加引用"打开"添加引用"对话框。
2)在"添加引用"对话框中,选择"COM">"MicrosoftWord11.0ObjectLibrary",点击"确定"按钮。
3)相同操作打开"添加引用"对话框,选择"浏览"项,查找到"Microsoft.Office.Interop.Word.dll"文件,选中它,点击"确定"按钮。
第三步,编码
这一步分为两个部分:
第一部分,Report编码。
第二部分,具体生成文档的编码。
1)根据模板新建文档
privateDocumentNewDoc(stringDotStr){
DocumentDoc;
objectobjTemplate=(object)DotStr;
objectobjMissing=Missing.Value;
Doc=_App.Documents.Add(
refobjTemplate,
refobjMissing,
refobjMissing,
refobjMissing
);
returnDoc;
}
2)定位到书签
插入书签后,就可以通过操作插入点使光标从文档的其他位置跳转到书签标记的位置,这里将用到Selection对象的GoTo方法,代码如下:
privatevoidGotoBookmark(DocumentDoc,stringNameStr)
{
objectobjWhat=WdGoToItem.wdGoToBookmark;;
objectobjWhich=WdGoToDirection.wdGoToPrevious;
objectobjMissing=Missing.Value;
objectobjName=(object)NameStr;
Doc.Bookmarks.get_Item(refobjName);
}
3)在书签处插入值,可以分三种情况:插入单个值,插入多个值,插入文件。代码分别如下:
在书签处插入单个值:
publicvoidInsertBookmarkValue(DocumentDoc,stringNameStr,stringValueStr,stringMsgStr)
{
Rangerng;
objectobjName=(object)NameStr;
if(Doc.Bookmarks.Exists(NameStr))
{
rng=Doc.Bookmarks.get_Item(refobjName).Range;;
rng.Text=ValueStr;
}
else
{
_Errors.Add("无法写入:"+MsgStr);
}
}
在书签处插入多个值:
publicvoidInsertBookmarkValue(DocumentDoc,stringNameStr,ArrayListValueArr,stringMsgStr)
{
Rangerng;
objectobjName=(object)NameStr;
if(Doc.Bookmarks.Exists(NameStr))
{
foreach(stringsinValueArr)
{
rng=Doc.Bookmarks.get_Item(refobjName).Range;;
rng.Text=s;
}}
else
{
_Errors.Add("无法写入:"+MsgStr);
}}
在书签处插入文件:
期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。
【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
投稿辅导服务咨询与期刊合作加盟
陆老师联系QQ:
蒋老师联系QQ:
刘老师联系QQ:
联系电话:18015016272
17327192284
投稿辅导投稿邮箱:zgqkk365@126.com
期刊推荐
- 《校园英语》旬刊 省级 教育类学术期刊
- 《吉林教育》旬刊 省级 教育类学术期刊
- 《文教资料》 旬刊 省级
- 《科技风》半月刊 省级 科技类优秀期刊
- 《价值工程》旬刊 国家级 科技统计源期刊
- 《中国实验方剂学杂志》 半月刊 北大核心
- 《电影评介》半月刊 14版北大核心
- 《社科纵横》季刊 社科类优秀期刊
- 《求索》月刊 14版北大核心期刊
- 《中华建设》月刊 国家级 建设类优秀期刊
- 《继续教育研究》月刊 北大核心期刊
- 《网络空间安全》(信息安全与技术)月刊 国
- 《新闻传播》月刊 省级 新闻类优秀期刊
- 《财会月刊》旬刊 14版北大核心
- 《体育文化导刊》月刊 体育类双核心期刊
- 《机械研究与应用》双月刊 省级 机械应用类
- 《公路交通科技》 月刊 北大核心
- 《教学与管理》旬刊 北大核心
- 《新课程研究》旬刊 省级 教育类优秀学术期
- 《中国医药指南》 旬刊 国家级
- 《高教论坛》 月刊 省级
- 《课程教育研究》 旬刊 国家级
- 《语文建设》 旬刊 14版北大核心
- 《教育发展研究》 半月刊 双核心
- 《学术界》 月刊 双核心


