转。。原理同样支持 delphi

我用C#导出excel 带图片,用office2003 正常,但换成office 2007 时,我指定多个单元格分别插入图片,这个图片不在此单元格内,这些图片全都集中在一起,在一个位置上。很奇怪,看起来也不是某个单元格
我导出图片的方法如下:
  ///
        /// 将图片插入到指定的单元格位置。
        /// 注意:图片必须是绝对物理路径
        ///
        /// 单元格名称,例如:B4
        /// 要插入图片的绝对路径。
        public void InsertPicture(string RangeName, string PicturePath)
        {
            m_objRange = m_objSheet.get_Range(RangeName, m_objOpt);
            m_objRange.Select();
            Excel.Pictures pics = (Excel.Pictures)m_objSheet.Pictures(m_objOpt);
            pics.Insert(PicturePath, m_objOpt);
        }

解决方法是

Excel.Pictures pics=(Excel.Pictures)worksheet.Pictures(Type.Missing);//建立图片集合对象

 int TD=1;
 int p=1;
Range range_1 =range=worksheet.get_Range('A'+TD.ToString(),'A'+TD.ToString());
     //获取填充单元格范围
      for 循环   

{    
      pics.Insert(picPath,Type.Missing);//获取图片

      Excel.Picture pic = (Excel.Picture )pics.Item(p);//建立图片集合某一图片对象

       pic.Left = (double)range_1.Left;
       pic.Top = (double)range_1.Top;
       pic.Height =(double)range_1.Height;
       pic.Width =(double)range_1.Width;
       TD=TD+1;
       p=p+1; 

}

关键在于pics一定要在多个图片循环插入的外面,同时要给每一张图片的left ,top 附成插入单元格的left top

这样在2007中,才能把图片插入到指定位置

posted @ 2015-09-01 11:15  透明_zhu  阅读(141)  评论(0编辑  收藏  举报