引用Word對象庫文件
具體做法是打開菜單欄中的項目>添加引用>瀏覽,在打開的“選擇組件”對話框中找到MSWORD.OLB后按確定即可引入此對象庫文件,vs.net將會自動將庫文件轉化為DLL組件,這樣我們只要在源碼中創建該組件對象即可達到操作Word的目的!
如圖
這會自動在你的應用程序文件夾中放置一個程序集(assembly)將COM接口邦定到Word。
上傳并存儲word文件
上傳文件時首先通過上傳控件找到所需上傳的文件,然后獲取文件的大小,最后以流的形式寫入數據庫
具體代碼為
C# 代碼 復制PRivate void Btn_OK_Click(object sender, System.EventArgs e)
{
string name=name_TextBox.Text;
//接收上傳文件
Stream fileStream=File1.PostedFile.InputStream;
//獲取上傳文件字節的大小
int length=File1.PostedFile.ContentLength;
byte[] wordData=new byte[length];
//從流中讀取字節并寫入wordData
int n=fileStream.Read(wordData,0,length);
//獲取當前時間
DateTime time=DateTime.Now;
//連接數據庫
SqlConnection conn=new SqlConnection();
conn.ConnectionString="workstation id=TIANCHUNZHU;packet size=4096;integrated security=SSPI;data source=TIANCHUNZHU;persist security info=False;initial catalog=test";
SqlCommand cmd=new SqlCommand();
cmd.Connection=conn;
cmd.CommandText="INSERT INTO word (fileName,postTime,fileContent) values (@fileName,@postTime,@fileContent)";
SqlParameter nameParam=new SqlParameter("@fileName",System.Data.SqlDbType.VarChar,50);
nameParam.Value=name;
cmd.Parameters.Add(nameParam);
SqlParameter timeParam=new SqlParameter("@postTime",System.Data.SqlDbType.DateTime,8);
timeParam.Value=time;
cmd.Parameters.Add(timeParam);
//添加word文件
SqlParameter contentParam=new SqlParameter("@fileContent",System.Data.SqlDbType.Image); ①//見本段最后注解
contentParam.Value=wordData;
cmd.Parameters.Add(contentParam);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
說明
此處由于是Image類型文件,事先可能無法預測文件的大小,因此可不必指定size參數。如果希望控制上傳文件的大小則可以輸入size參數。如指定1000,則上傳時最大可以上傳1k的word文檔。
從數據庫中讀取數據并恢復為word文件
讀取數據時先將數據從數據庫中讀入緩沖區,然后再從緩沖區寫入最終文件。因此首先要開辟一個緩沖區并設定它的大小,每當緩沖區讀滿時就要將緩沖區內的數據寫入文件,以清空緩沖區并繼續向緩沖區讀數據,直到最后一次將緩沖區內剩余的數據全部寫入文件,新的word文檔即可生成。
由于這一部分用到了字節流的輸入輸出操作,因此要引用System.IO命名空間
代碼
C# 代碼 復制新聞熱點
疑難解答