Chinaunix首页 | 论坛 | 博客
  • 博客访问: 165872
  • 博文数量: 36
  • 博客积分: 2160
  • 博客等级: 大尉
  • 技术积分: 382
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 01:48
个人简介

喝喝咖啡,做做开发

文章分类
文章存档

2014年(4)

2013年(1)

2012年(4)

2011年(2)

2010年(3)

2009年(9)

2008年(3)

2007年(10)

我的朋友

分类: 嵌入式

2009-11-07 17:10:29

读取EXCEL表格中的图片
山东人在成都

在EXCEL表格内放置图片,假设表格的大小大于图片的宽高,图片完全置于表格内,如何读取某个表格内的图片呢?使用微软的EXCEL组件,直接从CELL或RANGE对象内是无法读取的。图片是独立于单元格的,不从属于任何单元格,因此无法将图片与CELL或RANGE做对象级上的联系。所有图片都隶属于Shapes集合。每一张图片是一个shape判断一张图片是否在某一单元格内,可以使用坐标位置的方法,如果图片的位置在单元格的位置的高宽范围内,则表示图片在单元格内。判断出一张图片在某单元格内后,可以使用shape对象的CopyPicture方法,将图片复制到剪贴板,再从剪贴板内将图片存到本地。
示意代码如下:

for (int row = 1; row <= ws.UsedRange.Rows.Count; row++)
{
    for (int col = 1; col <= ws.UsedRange.Columns.Count; col++)
  {
      Range rge = ws.Cells[row, col] as Range;
      foreach (Shape sh in ws.Shapes)
    {
        Range rg = excel.get_Range(sh.TopLeftCell, sh.BottomRightCell);
        if (excel.Intersect(rge, rg, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing) != null)
      {
          sh.CopyPicture(Appearance.Button, Microsoft.Office.Interop.Excel.XlCopyPictureFormat.xlBitmap);
          IDataObject data = Clipboard.GetDataObject();
          if (data.GetDataPresent(DataFormats.Bitmap))
          {
              Image image = (Image)data.GetData(DataFormats.Bitmap, true);
              image.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
          }
      }
    }
  }
}


阅读(4011) | 评论(1) | 转发(0) |
0

上一篇:雅虎邮箱失效

下一篇:初见JSON

给主人留下些什么吧!~~

chinaunix网友2010-05-24 16:32:59

= pp【p【 【