基于C#的Word 文档自动导出模块的设计与实现(2)
时间:2013-12-21 11:39 文章来源:http://www.lunwenbuluo.com 作者:梁娟 陈智 点击次数:
文档中的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)根据模板新建文档
private Document NewDoc(stringDotStr){
Document Doc;
objectobj Template=(object)DotStr;
objectobj Missing=Missing.Value;
Doc=_App.Documents.Add(
refobj Template,
refobj Missing,
refobj Missing,
refobj Missing
);
returnDoc;
}
2)定位到书签
插入书签后,就可以通过操作插入点使光标从文档的其他位置跳转到书签标记的位置,这里将用到Selection对象的GoTo方法,代码如下:
privatevoidGotoBookmark(DocumentDoc,stringNameStr)
{
objectobj What=Wd Go ToItem.wdGoToBookmark;;
objectobj Which=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);
}}
在书签处插入文件:
publicvoidInsertBookmarkFile(DocumentDoc,stringNameStr,stringFileNameStr,stringMsgStr)
{
Rangerng;
objectobjName=(object)NameStr;
objectobjMissing=Missing.Value;
if(Doc.Bookmarks.Exists(NameStr))
{
rng=Doc.Bookmarks.get_Item(refobjName).Range;;
rng.InsertFile(
FileNameStr,
refobjMissing,
refobjMissing,
refobjMissing,
refobjMissing
);
}else
{
_Errors.Add("无法写入:"+MsgStr);
}}
4)关闭文件
finally
{
_App.Quit(
refobjMissing,//SaveChanges
refobjMissing,//OriginalFormat
refobjMissing//RoutDocument
);
_App=null;
}
第四步,运行程序生成文档,并查看生成的文档。
4小结
随着计算机技术的普及和发展,将上述Word文档自动导出模块应用于试题库随机组卷抽卷系统,实现Word文档格式的规范化,效果较理想。并按一定的原则规划和建设试题库,使用计算机软件系统管理试题库,保证了考试这一主要教学评价手段的科学性、规范性、可靠性和有效性,为提高教学质量,改进教学活动提供了有力支持。
参考文献:
[1]鲁保玉,杨新芳.用Delphi生成Word报告及动态结构表格[J].计算机应用与软件,2007,24(3):180-183.
[2]车晓波,王知学,王磊.在实现Word自动化操作中书签的应用[J].信息技术,2013(8):148-150.
[3]熊瑜容,柴毅,王淑娟.基于VC++的Word文档自动生成技术[J].ComputerEra,2010(1):52-54.
[4]李凌露.VC++开发文档自动化生成系统[J].中国电力教育,2007(1):219-221.
[5]舒谷生.试题库基于Word标签定义试题的策略[J].湖南城市学院学报,2012,21(3):72-74.
[6]刘东玉,尹照武,邱超.基于WordVBA的文档规范化软件设计与实现.软件导刊[J].2008,7(11):25-27.
- 论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
- 论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
-
- 论文投稿客服QQ:
2863358778、
2316118108
-
- 论文投稿电话:15380085870
-
- 论文投稿邮箱:lunwenbuluo@126.com