引用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# 代码 复制新闻热点
疑难解答