转。。原理同样支持 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中,才能把图片插入到指定位置