方法一:
/// 將圖片插入到指定的單元格位置,並設置圖片的寬度和高度。
/// 注意:圖片必須是絕對物理路徑
/// </summary>
/// <param name="RangeName">單元格名稱,例如:B4</param>
/// <param name="PicturePath">要插入圖片的絕對路徑。</param>
public void InsertPicture(string RangeName, Excel._Worksheet sheet, string PicturePath)
{
Excel.Range rng = (Excel.Range)sheet.get_Range(RangeName, Type.Missing);
rng.Select();
float PicLeft, PicTop, PicWidth, PicHeight; //距離左邊距離,頂部距離,圖片寬度、高度
PicTop = Convert.ToSingle(rng.Top) ;
PicWidth = Convert.ToSingle(rng.MergeArea.Width);
PicHeight = Convert.ToSingle(rng.Height);
PicWidth = Convert.ToSingle(rng.Width);
PicLeft = Convert.ToSingle(rng.Left);//+ (Convert.ToSingle(rng.MergeArea.Width) - PicWidth) / 2;
try
{
Excel.Pictures pics = (Excel.Pictures)sheet.Pictures(Type.Missing);
pics.Insert(PicturePath, Type.Missing);
pics.Left = (double)rng.Left;
pics.Top = (double)rng.Top;
pics.Width = (double)rng.Width;
pics.Height = (double)rng.Height;
}
catch
{
}
//sheet.Shapes.AddPicture(PicturePath, Microsoft.Office.Core.MsoTriState.msoFalse,
// Microsoft.Office.Core.MsoTriState.msoTrue, PicLeft, PicTop, PicWidth, PicHeight);
}
如果是要在某個區域插入,改區域沒有命名的話,直接傳入選中區域
Cell1 = SourceSheet.Cells[第幾行, 第幾列];
Cell2 = SourceSheet.Cells[Row , Column];
SourceRange = SourceSheet.get_Range(Cell1, Cell2);
然后把上面的這句去掉 Excel.Range rng = (Excel.Range)sheet.get_Range(RangeName, Type.Missing);
把rng換成SourceRange
方法二:
sheet.Shapes.AddPicture(。。。。。)
/// 將圖片插入到指定的單元格位置,並設置圖片的寬度和高度。
/// 注意:圖片必須是絕對物理路徑
/// </summary>
/// <param name="rng">Excel單元格選中的區域</param>
/// <param name="PicturePath">要插入圖片的絕對路徑。</param>
public void InsertPicture(Excel.Range rng, Excel._Worksheet sheet, string PicturePath)
{
rng.Select();
float PicLeft, PicTop, PicWidth, PicHeight;
try
{
PicLeft = Convert.ToSingle(rng.Left);
PicTop = Convert.ToSingle(rng.Top);
PicWidth = Convert.ToSingle(rng.Width);
PicHeight = Convert.ToSingle(rng.Height);
//參數含義:
//圖片路徑
//是否鏈接到文件
//圖片插入時是否隨文檔一起保存
//圖片在文檔中的坐標位置 坐標
//圖片顯示的寬度和高度
sheet.Shapes.AddPicture(PicturePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, PicLeft, PicTop, PicWidth, PicHeight);
}
catch(Exception ex)
{
MessageBox.Show("錯誤:" + ex.Message);
}
}