如何读取EXCEL文件中的图片?
下午写了半天的文章因为优快云的BLOG又出问题而报废了,这里出问题的次数也太多了点,靠!
现在没有心情再重写一次,所以就简单点说下算了,实在抱歉。
一、概述
因为使用ado或者ado.net只能读取excel中的文本数据(包括可以转换为文本的数据),所以不能使用数据库访问的方式来读取图片了。本文讲述了怎样通过引用office中的excel,然后通过excel来读取图片的过程。
二、实现过程
1.将类型库转换成.net类库
在控制台下,使用tlbimp工具可以达到目的,请执行命令:tlbimp excel9.olb。将得到3个类库文件:excel.dll、office.dll和vbide.dll,其中我们必须引用excel.dll。
2.在项目中引用excel.dll文件,将会多出一个叫Excel的命名空间,我们需要用到里面的类有:
Application
Workbooks
Range
三、源代码
下面假设桌面上存在文件test.xls,并且第2行第2列所在单元格包含有图片。
//引用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;
}
}
感谢您看完本文,希望对您有所帮助。
再次发牢骚:这里的 blog 也太差了,动不动就挂掉!!!!浪费别人的时间就是谋杀!!!!!!