//引用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图片到数据库和上传图片到数据库相关推荐

  1. python如何修改excel数据库_python学习笔记-day7-2-【python从mysql数据库导数据到excel,读excel,修改excel】...

    这节说下如何用python把数据库里的数据导出到excel里,并如何读取excel, 修必excel等操作. 一.用python把数据库里的数据导出到excel里 1.导入如下的模块,没有的话需要安装 ...

  2. 【报错笔记】在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录。

    在做图片上传时上传图片后可以跳转到上传成功界面,也没有报错,数据库中也传入了值,可是eclipse中webapp下怎样都无法生存目录. 我使用UUID生成8级目录,在webapp下创建目录,将图片传进 ...

  3. Layui表格内图片渲染以及上传图片到数据库(上)

    Layui表格内图片渲染以及上传图片到数据库(上) 文献种类:专题技术文献; 开发工具与关键技术:VS Layui框架是现在用的范围比较广的一个,那么今天实现是在layui表格中渲染图片! 首先看一下 ...

  4. jsp 图片上传到oracle,jsp上传图片到数据库(oracle),并能在页面上显示解决办法

    jsp上传图片到数据库(oracle),并能在页面上显示解决办法 jsp上传图片到数据库(oracle),并能在页面上显示解决办法 日期:2014-05-18 浏览次数:20341 次 jsp上传图片 ...

  5. 用matlab把表转化为图片,matlab怎么excel数据转化为图像《matlab将excel数据读成图片》...

    这个表格的数据怎样用matlab转换为图像?是一个49*57的表格 load进workspace,数值类型做一定的转换,就可以了. 如何将Excel中的数据导入MATLAB并在MATLAB中画出图像 ...

  6. ASP.NET中常用功能代码总结(3)——上传图片到数据库

    ASP.NET中常用功能代码总结(3)--上传图片到数据库<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offi ...

  7. c winform 上传文件到mysql_C# winform DevExpress上传图片到数据库【转】

    实现功能如下图: 注明:此文使用的是DevExpress控件,winform 原生控件也是一样使用方法. 1.点击选择图片按钮,功能为通过对话框选择要上传的文件,并将该文件在下面的PictureEdi ...

  8. php上传图片显示在当前页,PHP上传图片到数据库并显示

    PHP上传图片到数据库并显示 1.创建数据表CREATE TABLE ccs_image ( id int(4) unsigned NOT NULL auto_increment, descripti ...

  9. python读取读excel,日期变成了数字,解决方法记录

    目录 1 问题描述 2 解决方案 3 后续解决措施 4 延伸,使用 xlrd 读取excel时出现数字的解决方法 5 参考文章 记录一下最近碰到的一个小问题. 1 问题描述 目标:使用Django从E ...

最新文章

  1. c++ windows获得当前工作目录文件_基于linux下Python文件操作
  2. 今晚 8 点直播 | OpenCV 20 年,首款开源软硬一体的 OAK 套件来了!
  3. 使用VC++绘制坐标系
  4. mybatis的SelectKey属性的作用
  5. JavaScript数据结构与算法——列表详解(上)
  6. 漫画算法:辗转相除法是什么鬼
  7. 不具有继承关系的Delegate如何进行类型转换?
  8. 分享基于silverlight的一个大文件上传控件
  9. 计算机网络 职中,职中计算机网络基础期中考试试卷.pdf
  10. Android 屏幕防偷窥,Android 8.1将发布:启用TLS加密防偷窥
  11. 考前必练15道题_《系统集成项目管理工程师备考宝典》
  12. Android WiFi 获取 IP 过程
  13. Java Web程序设计
  14. java 文档比较功能_java 实现在线比较两个版本的Word文档的功能
  15. 如何创建(设置)一个可以开发微信小游戏的appid
  16. 【Appium】使用W3C actions方法长按元素
  17. androidnbsp;软件apk
  18. 【懒懒的Python学习笔记一】
  19. Vue —— 排他思想
  20. linux和windows认证sssd,linux – 使用sssd和Active Directory集成的麻烦

热门文章

  1. 解决JQuery AutoComplete在IE9下出错的问题
  2. Window2008R2安装Telnet客户端
  3. mysql全局权限账户%登录不上ERROR 1045 (28000): Access denied for user #39;mhz#39;@#39;localhost#39; (using ...
  4. textview的基本设置
  5. 常用的 服务器 与 交换机
  6. TypePerf收集服务器性能
  7. 10个C#编程和Visual Studio使用技巧
  8. [第180期]我在51CTO的提问:如何做好企业信息安全管理
  9. over partition by与group by 的区别
  10. 最大整数(Noip1998连接多位数)