读excel图片到数据库和上传图片到数据库
//引用Excel命名空間
??????? using Excel;
??????? //......
??????? //下面從test.xls中的2,2格復制圖片到剪貼板,然后從剪貼板讀取圖片并顯示到pictureBox1中。
??????? private void btnGetImageFromExcel_Click(object sender, EventArgs e)
??????? {
??????????? //初始化excel對象
??????????? Excel.Application excel = new Excel.Application();
??????????? //打開xls文件(注意:后面的參數都用Type.Missing填充,表示使用參數的默認值)
??????????? excel.Workbooks.Open(@"D:\Documents and Settings\xrwang\桌面\test.xls", System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);
??????????? //選定到第2行第2列所在的單元格
??????????? Range r = (Range)excel.Cells[2, 2];
??????????? r.Select();
??????????? //將單元格復制到剪貼板中
??????????? r.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap);
??????????? //退出excel
??????????? excel.Quit();
??????????? //判斷剪貼板中是否存在圖片,如果存在,則將圖片顯示到pictureBox1中
??????????? if (Clipboard.ContainsImage())
??????????? {
??????????????? Image image=Clipboard.GetImage();
??????????????? pictureBox1.Image = image;
??????????? }
??????? }
?
?
?
?
?
?
?
Image轉成Byte[]的問題把我這個入門級的Asp.Net用戶快要搞暈了,費了很大的勁,查了很多的文章,終于搞定了,把方法寫出來,希望能幫助遇到同樣問題的人.
?
程序目的是做一個可以上傳照片,然后生成縮略圖,把縮略圖保存到數據庫image字段中,供顯示照片時動態顯示輸出.
我把關鍵代碼列出來:
//下面是根據上傳的文件,產生縮略圖,然后保存到數據庫image表中(為將問題簡單化,這里把表的字段做了減少).
??????? string fstr = FileUpload1.PostedFile.FileName; ;//上傳的文件名
??????? string fmime = FileUpload1.PostedFile.ContentType;//文件的MIME類型
??????? string sql;
??????? int fsize = FileUpload1.PostedFile.ContentLength; //文件大小
???????
??????? //利用Bitmap類獲得圖像的尺寸
??????? Bitmap bmp = new Bitmap(fstr);
??????? int imgH = bmp.Height;
??????? int imgW = bmp.Width;
??????? //縮略圖保持原圖片比例,計算出大小
??????? float simg1,simg2;
??????? if (imgW > imgH)
??????? {
??????????? //橫向圖片
??????????? simg1 = 100;
??????????? simg2 = simg1/imgW * imgH;
??????? }
??????? else
??????? {
??????????? //縱向圖片
??????????? simg2 = 100;
??????????? simg1 = simg2/imgH * imgW;
??????? }
??????? //生成縮略圖
??????? System.Drawing.Image smallimg = bmp.GetThumbnailImage((int)simg1, (int)simg2, null, IntPtr.Zero);
??????? MemoryStream ms = new MemoryStream();
??????? smallimg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//將圖像保存到內存流中
??????? byte[] data ={ }; //建立一個字節數組,用于保存圖像數據
??????? data=ms.ToArray();//把流的數據保存到數組
??????? fsize = (int)ms.Length;//流數據大小
??????? //生成SQL語句,因為使用了字節數組,必須使用帶參數的SQL,否則無法執行,@1就是參數
??????? SqlConnection conn = new SqlConnection();
??????? conn.ConnectionString = ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString;
??????? conn.Open();
??????? sql = "insert into [image] (itype,imagedata,isize) values('" + fmime + "',@1," + fsize + ")";
??????? SqlCommand cmd = new SqlCommand(sql, conn);
??????? cmd.Parameters.Add(new SqlParameter("@1", SqlDbType.Image));
??????? cmd.Parameters["@1"].Value = data;
??????? int count = cmd.ExecuteNonQuery();
?
//下面是動態顯示圖像數據
??????? SqlConnection conn = new SqlConnection();
??????? conn.ConnectionString = ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString;
??????? conn.Open();
??????? string sql = "select * from [image] where id=1"; //這里id使用的是1,實際可以根據需要傳一個值
??????? SqlCommand cmd = new SqlCommand(sql, conn);
??????? cmd.CommandTimeout = 60;
??????? SqlDataReader dr = cmd.ExecuteReader();
??????? if (dr.Read())
??????? {
??????????? Response.ContentType = dr["itype"].ToString().Trim();
??????????? //輸出圖片文件二進制數據
??????????? Response.OutputStream.Write((byte[])dr["imagedata"], 0, (int)dr["isize"]);
??????????? Response.End();
??????? }
?
/*補充說明:
*連接數據庫部分的代碼可以做成一個類,供多次引用,而不必要每次重復地寫出來.
*如果要將動態顯示出來的圖像用一個Image控件顯示出來的話,可以把動態顯示數據的代碼做成一個單獨的文件例
*如"showimage.aspx",然后將Image的src地址寫為"showimage.aspx",如果需要動態顯示多個圖像,可以給"showimage.aspx"傳參數進
*去,改變id的值即可.
?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/kexijun20014/archive/2009/12/31/5111749.aspx
轉載于:https://www.cnblogs.com/lhuser/articles/1767521.html
總結
以上是生活随笔為你收集整理的读excel图片到数据库和上传图片到数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于bind1st和bind2nd
- 下一篇: 今日学习心得——装饰模式