基于ASP.NET批量导出Word文件并打包下载

时间:2022-09-27 08:08:37

基于ASP.NET批量导出Word文件并打包下载

摘要:使用Microsoft Visual Studio 2010在平台上建立BS架构的应用程序,实现将数据导入Word模板,并生成Word文件,再通过WinRAR对文件进行压缩后下载至本地。

关键词:;C#;Office 2003;Word;WinRAR;

中图分类号:TP312文献标识码:A文章编号:1009-3044(2012)26-6179-04

在制作软件时,客户通常需要系统有将数据生成指定格式的Word文件,并将其下载至本地的功能,如:生成人员信息表,生成人员简历等。下面介绍的是其中一种在平台下实现此功能的方法。

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创建名为WordOp.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 SaveAs(string strFname, bool isReplace)

{

if (isReplace && File.Exists(strFname))

{File.Delete(strFname);}

object missing = Type.Missing;

object fileName = strFname;

WordDoc.SaveAs(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);

上一篇:以工作过程为导向构建高职计算机网络技术专业... 下一篇:基于工作过程的平面排版设计课程项目教学的实...