WEB开发网
开发学院WEB开发ASP.NET 用ado.net对word,excel进行存取 阅读

用ado.net对word,excel进行存取

 2005-02-05 17:49:29 来源:WEB开发网   
核心提示:blob表3 id int 4 00 name char 50 10 blob image 16 10 type char 60 1saveFile.aspx.cs PRivate void Button1_Click(object sender, System.EventArgs e) { Stream imgd

blob表

3 id int 4 0
0 name char 50 1
0 blob image 16 1
0 type char 60 1

saveFile.aspx.cs

  PRivate void Button1_Click(object sender, System.EventArgs e)
  {
  Stream imgdatastream = File1.PostedFile.InputStream;
  int imgdatalen = File1.PostedFile.ContentLength;
  string imgtype = File1.PostedFile.ContentType;
  string name = this.getFileNameByURL(this.File1.PostedFile.FileName);
  byte[] imgdata = new byte[imgdatalen];
  int n = imgdatastream.Read(imgdata,0,imgdatalen);
  string connstr =  "workstation id=OVERMIND;packet size=4096;user id=sa;passWord=sa;data source=OVERMIND;persist security info=False;initial catalog=wztj";
  SqlConnection connection = new SqlConnection(connstr);
  SqlCommand command = new SqlCommand("INSERT INTO blob(name,type,blob)  VALUES ( @imgtitle, @type,@blob )", connection );
  SqlParameter paramTitle = new SqlParameter("@imgtitle", SqlDbType.VarChar,50 );
  paramTitle.Value = name;
  command.Parameters.Add(paramTitle);
  SqlParameter paramData = new SqlParameter( "@blob", SqlDbType.Image );
  paramData.Value = imgdata;
  command.Parameters.Add( paramData );
  SqlParameter paramType = new SqlParameter( "@type", SqlDbType.VarChar,50 );
  paramType.Value = imgtype;
  command.Parameters.Add( paramType );
  wztj.debug.TestSQL.TraceErrorSql("INSERT INTO blob(name,type,blob)  VALUES ( @imgtitle, @type,@blob )",command.Parameters);
  connection.Open();
  int numRowsAffected = command.ExecuteNonQuery();
  connection.Close();
  }

listFile.aspx//这个东西主要用来列表,把已经有的东西列出来

<asp:HyperLinkColumn DataNavigateUrlField="id" HeaderText="产品名称" DataNavigateUrlFormatString="./getFile.aspx?ID={0}" DataTextField="name" DataTextFormatString="{0}" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="160px">

listFile.aspx.cs

  string connstr="workstation id=OVERMIND;packet size=4096;user id=sa;password=sa;data source=OVERMIND;persist security info=False;initial catalog=wztj";
  SqlConnection connection = new SqlConnection(connstr);
  SqlCommand command = new SqlCommand("select * from blob", connection );
  connection.Open();
  SqlDataAdapter adaptor = new SqlDataAdapter(command);
  DataSet ds = new DataSet();
  adaptor.Fill(ds,"blob");
  connection.Close();
  this.DataGrid1.DataSource=ds.Tables["blob"].DefaultView;
  this.DataGrid1.DataBind();

getFile.aspx.cs//这个文件比较重要负责把村道数据库里面的文件,按照格式,按照名称,给传输出来

  private void Page_Load(object sender, System.EventArgs e)
  {
  string imgid =this.Request.QueryString.Get("ID");
  //Request.QueryString["imgid"];
  string connstr="workstation id=OVERMIND;packet size=4096;user id=sa;password=sa;data source=OVERMIND;persist security info=False;initial catalog=wztj";
  string sql="SELECT name,blob, type FROM blob WHERE id = " + imgid;
  SqlConnection connection = new SqlConnection(connstr);
  SqlCommand command = new SqlCommand(sql, connection);
  connection.Open();
  SqlDataReader dr = command.ExecuteReader();
  if(dr.Read())
  {
   Response.Clear();
   Response.Buffer= true;
   Response.Charset="GB2312";  
   Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
   //Response.ContentType = "application/ms-word";//设置输出文件类型为word文件。
   Response.ContentType = dr["type"].ToString();
   Response.BinaryWrite( (byte[]) dr["blob"] );
   string FileName = dr["name"].ToString().Trim();
   FileName=System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8 );
   Response.AppendHeader("Content-Disposition", "attachment;filename="+FileName);
  }
  connection.Close();
  }


这里要说的有两点,第一,就是把文件的名称getFile.aspx变成我们想要的名称。

 Response.AppendHeader("Content-Disposition", "attachment;filename="+FileName);

第二,就是把指定的名称变成我们想要的值,是标准的中文,而不是中文的乱码。

 FileName=System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8 );

Tags:ado net word

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接