c#在Excel指定單元格中插入圖片


方法一:

/// 將圖片插入到指定的單元格位置,並設置圖片的寬度和高度。
/// 注意:圖片必須是絕對物理路徑
/// </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);
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM