您的位置: turnitin查重官网> 计算机 >> 数据结构 >阐述导出基于ASP.NET批量导出Word文件并打包

阐述导出基于ASP.NET批量导出Word文件并打包

收藏本文 2024-01-16 点赞:34505 浏览:158726 作者:网友投稿原创标记本站原创

摘要:使用Microsoft Visual Studio 2010在ASP.NET平台上建立BS架构的应用程序,实现将数据导入Word模板,并生成Word文件,再通过WinRAR对文件进行压缩后下载至本地。
关键词:ASP.NET;C#;Office 2003;Word;WinRAR;
1009-3044(2012)26-6179-04
在制作软件时,客户通常需要系统有将数据生成指定格式的Word文件,并将其下载至本地的功能,如:生成人员信息表,生成人员简历等。下面介绍的是其中一种在ASP.NET平台下实现此功能的方法。
1实现功能
访问系统网站,将所需要的人员信息批量生成Word文件并打包下载至本地PC,要求生成的Word文件中数据均在指定的位置,并且含有合乎大小要求的员工相片。
2前期准备
怎么写作器需安装Office 2003,以便在程序中引入Microsoft.Vbe.Interop.dll;需要制作Word模板,在模板中提前构建好人员信息表的布局,如图1;并将其存储在怎么写作器的指定文件夹下。在Microsoft Visual Studio 2010下创建Visual C#网站。
3实现过程

3.1在模板中插入书签

在先前制作的Word模板中插入书签。例如在需显示姓名的位置上插入书签,并设置书签的ID,如图2;在模板中姓名的显示位上置插入了ID为name的书签。
图2插入Word书签
在所有需要的位置上插入书签后,保存Word模板。
3.2创建名为Word

摘自:毕业论文格式模板www.udooo.com

Op.cs的类文件
WordOp类主要用来对Word的操作,即生成Word文件,并且在生成的Word文件中插入指定数据的功能,实现代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//引用Interop.Microsoft.Office.Interop.Word.dll
using Microsoft.Office.Interop.Word;
using System.IO;
//
//WordOp
//

public class WordOp
{public WordOp()
{//TODO:在此处添加构造函数逻辑}
private ApplicationClass WordApp;
private Document WordDoc;
private static bool isOpened = false;//判断word模版是否被占用
public void SeAs(string strFname, bool isReplace)
{
if (isReplace && File.Exists(strFname))
{File.Delete(strFname);}
object missing = Type.Missing;
object fileName = strFname;
WordDoc.SeAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);}
//定义一个Word.Application对象
public void activeWordApp()
{WordApp = new ApplicationClass();}
public void Quit()
{object missing = System.Reflection.Missing.Value;
WordApp.Application.Quit(ref missing, ref missing, ref missing);
isOpened = false;}
//按照先前设计好的模版新建Word文件
public void OpenTempelte(string strTemppath)
{object Missing = Type.Missing;
//object Missing = System.Reflection.Missing.Value;
activeWordApp();
WordApp.Visible = false;
object oTemplate = (object)strTemppath;
try
{
WordDoc = WordApp.Documents.Add(ref oTemplate, ref Missing, ref Missing, ref Missing);isOpened = true;
WordDoc.Activate();}
catch (Exception Ex)
{Quit();
isOpened = false;
throw new Exception(Ex.Message);}}
public void FillLable(string LabelId, string Content)
{ //打开Word模版
// OpenTempelte(tempName); //对LabelId的标签进行填充内容Content,即函件题目项
object bkmC = LabelId;
if (WordApp.ActiveDocument.Bookmarks.Exists(LabelId) == true)
{if (LabelId != "PIC")//判断是否是显示照片的书签
{WordApp.ActiveDocument.Bookmarks.get_Item(ref bkmC).Select();
WordApp.Selection.TypeText(Content);}
else
{try
{object missing = System.Reflection.Missing.Value;
InlineShape li = WordApp.ActiveDocument.Bookmarks.get_Item(ref bkmC).Range.InlineShapes.AddPicture(Content, ref missing, ref missing, ref missing);
li.Width = 85;//设置照片的宽
li.Height = 100;} //设置照片的高
catch { }
}}}}
需要注意的是,在填充书签数据时,可以根据书签ID来判断书签的用途,如果是用来显示照片的书签,需要使用WordApp.Acti? veDocument.Bookmarks.get_Item(ref bkmC).Range.InlineShapes.AddPicture()方法,并为相片按照Word模板上需显示的大小设置高度和宽度。

3.3将人员信息生成Word文件

获取Word模板的地址和Word模板的文件名。
string path = Server.MapPath("当前路径");
string templatePath = path + "//Word模板名称";
建立WordOp类的实例。
WordOp wop = new WordOp();
调用WordOp类中的OpenTempelte()方法,把带Word模板名称的路径传给此方法。如:wop.OpenTempelte(templatePath);
调用WordOp类中的FillLable()方法,把书签ID和需要导入的数据传给此方法。如:wop.FillLable("name", "张三");
如果要传图片数据,就将图片的地址传递过去即可。
如:wop.FillLable("PIC", "http”//…….jpg");
接下来调用WordOp类中的wop.SeAs()方法,将已经把数据插入指定位置,并且建立完成的Word文件命名,存入指定的路径下。
如:wop.SeAs(指定路劲+ "Wor

源于:查抄袭率论文www.udooo.com

d文件名.doc", true);
最后调用WordOp类中的wop.Quit()方法关闭系统对Word的调用。
如:wop.Quit();
这样就成功的将一份已经导入数据的Word文件建立在了指定的路径下;如果需要生成多份Word文件,就把上述代码写在循环中即可。

3.4将Word文件打包并下载

接下来是要将生成好的Word文件下载到本地PC机上。一般情况下,如果下载的文件为单一文件,都会很容易实现;然而下载文件为复数时,一般的下载方法就不能应用了,此时,必须将文件进行压缩,打包成一个RAR文件进行下载。这里需要运用Win RAR,首先编写对WinRAR操作的方法CreateRar()。
public void CreateRar(string pSource, string pDestination)
{string _Source = pSource.ToString();
string _Destination = pDestination.ToString();
System.Diagnostics.Process _Process = new System.Diagnostics.Process();
_Process.StartInfo.FileName = "Winrar.exe";
_Process.StartInfo.CreateNoWindow = true;
_Process.StartInfo.Arguments = " a -r -ep1 " + _Destination + " " + _Source;
_Process.Start();
_Process.WaitForExit();
if (_Process.HasExited)
{int iExitCode = _Process.ExitCode;
if (iExitCode == 0)
{//压缩成功}
else
{//压缩失败}}
_Process.Close();}
调用CreateRar(),将要压缩的文件夹和文件夹压缩后的存放路径及名称作为参数,传给此方法。
如:CreateRar(压缩文件路径),存放路径+ "/Word.rar"));
然后,再将压缩好的Word.rar文件下载至本地PC机解压即可。最终Word文件的显示效果如图3所示。在对批量的Word文件进行压缩时,需要注意一点,如果压缩文件数量过多,系统会出现过长的命令运行时间,有可能会误导用户,使其产生系统功能出错或网速过慢的错觉。所以最好在系统进行压缩时,在界面上显示等待提示,在后台对文件压缩的时间进行判断,用Sleep()将系统挂起预计的时间,这样做可大大降低系统出错的几率。
4结尾语
由于Office办公软件被广泛使用,所以在编写应用系统时,很多功能都需要和Office组件进行结合开发来实现。上述内容只是针对了Office中的Word一项进行介绍,然而还有很多种方法可以和Office中的任何功能进行结合或调用,例如在Microsoft Visual Studio 2010中,就专门提供了许多和Office的外接程序,这些都需要在学习和实践中来慢慢掌握。
参考文献:
Asp.net下将页面内容导入到word模板中的方法[EB/OL].http:///program/a/2010111566128.shtml.
[3] DE STEARNS.Microsoft Office 2000 Web Components编程技术内幕[M].北京:北京希望电子出版社,2000.

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号