国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ASP.NET批量導(dǎo)出Word文件并打包下載

2012-04-29 00:44:03宋昀杰于梅英張珂
電腦知識(shí)與技術(shù) 2012年26期
關(guān)鍵詞:書簽文件夾調(diào)用

宋昀杰 于梅英 張珂

摘要:使用Microsoft Visual Studio 2010在ASP.NET平臺(tái)上建立BS架構(gòu)的應(yīng)用程序,實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)入Word模板,并生成Word文件,再通過WinRAR對(duì)文件進(jìn)行壓縮后下載至本地。

關(guān)鍵詞:ASP.NET;C#;Office 2003;Word;WinRAR;

中圖分類號(hào):TP312文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)26-6179-04

在制作軟件時(shí),客戶通常需要系統(tǒng)有將數(shù)據(jù)生成指定格式的Word文件,并將其下載至本地的功能,如:生成人員信息表,生成人員簡(jiǎn)歷等。下面介紹的是其中一種在ASP.NET平臺(tái)下實(shí)現(xiàn)此功能的方法。

1實(shí)現(xiàn)功能

訪問系統(tǒng)網(wǎng)站,將所需要的人員信息批量生成Word文件并打包下載至本地PC,要求生成的Word文件中數(shù)據(jù)均在指定的位置,并且含有合乎大小要求的員工相片。

2前期準(zhǔn)備

服務(wù)器需安裝Office 2003,以便在程序中引入Microsoft.Vbe.Interop.dll;需要制作Word模板,在模板中提前構(gòu)建好人員信息表的布局,如圖1;并將其存儲(chǔ)在服務(wù)器的指定文件夾下。在Microsoft Visual Studio 2010下創(chuàng)建Visual C#網(wǎng)站。

3實(shí)現(xiàn)過程

3.1在模板中插入書簽

在先前制作的Word模板中插入書簽。例如在需顯示姓名的位置上插入書簽,并設(shè)置書簽的ID,如圖2;在模板中姓名的顯示位上置插入了ID為name的書簽。

圖2插入Word書簽

在所有需要的位置上插入書簽后,保存Word模板。

3.2創(chuàng)建名為WordOp.cs的類文件

WordOp類主要用來對(duì)Word的操作,即生成Word文件,并且在生成的Word文件中插入指定數(shù)據(jù)的功能,實(shí)現(xiàn)代碼如下:

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:在此處添加構(gòu)造函數(shù)邏輯}

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);}

//定義一個(gè)Word.Application對(duì)象

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;}

//按照先前設(shè)計(jì)好的模版新建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); //對(duì)LabelId的標(biāo)簽進(jìn)行填充內(nèi)容Content,即函件題目項(xiàng)

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;//設(shè)置照片的寬

li.Height = 100;} //設(shè)置照片的高

catch { }

}}}}

需要注意的是,在填充書簽數(shù)據(jù)時(shí),可以根據(jù)書簽ID來判斷書簽的用途,如果是用來顯示照片的書簽,需要使用WordApp.Acti? veDocument.Bookmarks.get_Item(ref bkmC).Range.InlineShapes.AddPicture()方法,并為相片按照Word模板上需顯示的大小設(shè)置高度和寬度。

3.3將人員信息生成Word文件

獲取Word模板的地址和Word模板的文件名。

string path = Server.MapPath("當(dāng)前路徑");

string templatePath = path + "http://Word模板名稱";

建立WordOp類的實(shí)例。

WordOp wop = new WordOp();

調(diào)用WordOp類中的OpenTempelte()方法,把帶Word模板名稱的路徑傳給此方法。如:wop.OpenTempelte(templatePath);

調(diào)用WordOp類中的FillLable()方法,把書簽ID和需要導(dǎo)入的數(shù)據(jù)傳給此方法。如:wop.FillLable("name", "張三");

如果要傳圖片數(shù)據(jù),就將圖片的地址傳遞過去即可。

如:wop.FillLable("PIC", "http”//…….jpg");

接下來調(diào)用WordOp類中的wop.SaveAs()方法,將已經(jīng)把數(shù)據(jù)插入指定位置,并且建立完成的Word文件命名,存入指定的路徑下。

如:wop.SaveAs(指定路勁+ "Word文件名.doc", true);

最后調(diào)用WordOp類中的wop.Quit()方法關(guān)閉系統(tǒng)對(duì)Word的調(diào)用。

如:wop.Quit();

這樣就成功的將一份已經(jīng)導(dǎo)入數(shù)據(jù)的Word文件建立在了指定的路徑下;如果需要生成多份Word文件,就把上述代碼寫在循環(huán)中即可。

3.4將Word文件打包并下載

接下來是要將生成好的Word文件下載到本地PC機(jī)上。一般情況下,如果下載的文件為單一文件,都會(huì)很容易實(shí)現(xiàn);然而下載文件為復(fù)數(shù)時(shí),一般的下載方法就不能應(yīng)用了,此時(shí),必須將文件進(jìn)行壓縮,打包成一個(gè)RAR文件進(jìn)行下載。這里需要運(yùn)用Win RAR,首先編寫對(duì)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();}

調(diào)用CreateRar(),將要壓縮的文件夾和文件夾壓縮后的存放路徑及名稱作為參數(shù),傳給此方法。

如:CreateRar(壓縮文件路徑),存放路徑+ "/Word.rar"));

然后,再將壓縮好的Word.rar文件下載至本地PC機(jī)解壓即可。最終Word文件的顯示效果如圖3所示。在對(duì)批量的Word文件進(jìn)行壓縮時(shí),需要注意一點(diǎn),如果壓縮文件數(shù)量過多,系統(tǒng)會(huì)出現(xiàn)過長(zhǎng)的命令運(yùn)行時(shí)間,有可能會(huì)誤導(dǎo)用戶,使其產(chǎn)生系統(tǒng)功能出錯(cuò)或網(wǎng)速過慢的錯(cuò)覺。所以最好在系統(tǒng)進(jìn)行壓縮時(shí),在界面上顯示等待提示,在后臺(tái)對(duì)文件壓縮的時(shí)間進(jìn)行判斷,用Sleep()將系統(tǒng)掛起預(yù)計(jì)的時(shí)間,這樣做可大大降低系統(tǒng)出錯(cuò)的幾率。

4結(jié)尾語(yǔ)

由于Office辦公軟件被廣泛使用,所以在編寫應(yīng)用系統(tǒng)時(shí),很多功能都需要和Office組件進(jìn)行結(jié)合開發(fā)來實(shí)現(xiàn)。上述內(nèi)容只是針對(duì)了Office中的Word一項(xiàng)進(jìn)行介紹,然而還有很多種方法可以和Office中的任何功能進(jìn)行結(jié)合或調(diào)用,例如在Microsoft Visual Studio 2010中,就專門提供了許多和Office的外接程序,這些都需要在學(xué)習(xí)和實(shí)踐中來慢慢掌握。

參考文獻(xiàn):

[1] Asp.net下將頁(yè)面內(nèi)容導(dǎo)入到word模板中的方法[EB/OL].http://www.alixixi.com/program/a/2010111566128.shtml.

[3] DAVE STEARNS.Microsoft Office 2000 Web Components編程技術(shù)內(nèi)幕[M].北京:北京希望電子出版社,2000.

猜你喜歡
書簽文件夾調(diào)用
磁力文件夾
透明書簽
十一月書簽
文苑·感悟(2019年11期)2019-12-05 02:50:31
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
十一月書簽
文苑(2019年21期)2019-11-04 09:16:40
貳月書簽
文苑·感悟(2019年2期)2019-02-18 02:10:40
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
調(diào)動(dòng)右鍵 解決文件夾管理三大難題
基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
TC一鍵直達(dá)常用文件夾
電腦迷(2015年1期)2015-04-29 21:24:13
宜章县| 贡山| 新丰县| 石嘴山市| 罗平县| 灵武市| 怀远县| 靖远县| 土默特右旗| 宁明县| 清水县| 邳州市| 泸溪县| 大理市| 岐山县| 澄城县| 资源县| 咸阳市| 吐鲁番市| 东宁县| 平江县| 广州市| 南城县| 拜泉县| 府谷县| 浮梁县| 武宁县| 墨脱县| 灵宝市| 佛学| 会昌县| 塔城市| 闽清县| 宝鸡市| 永新县| 年辖:市辖区| 徐州市| 威海市| 桐柏县| 开封市| 扶沟县|