日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

读excel图片到数据库和上传图片到数据库

發布時間:2025/7/14 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 读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图片到数据库和上传图片到数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。