c#向Excel中插入图片

添加引用,添加excel的com组件

  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.Text;
  4. //usingExcel=Microsoft.Office.Interop.Excel;
  5. usingExcel;
  6. usingSystem.Windows.Forms;
  7. namespaceExcelReport
  8. {
  9. classInsertPicToExcel
  10. {
  11. /**////<summary>
  12. ///打开没有模板的操作。
  13. ///</summary>
  14. publicvoidOpen()
  15. {
  16. this.Open(String.Empty);
  17. }

  18. /**////<summary>
  19. ///功能:实现Excel应用程序的打开
  20. ///</summary>
  21. ///<paramname="TemplateFilePath">模板文件物理路径</param>
  22. publicvoidOpen(stringTemplateFilePath)
  23. {
  24. //打开对象
  25. m_objExcel=newExcel.Application();
  26. m_objExcel.Visible=false;
  27. m_objExcel.DisplayAlerts=false;

  28. if(m_objExcel.Version!="11.0")
  29. {
  30. MessageBox.Show("您的Excel版本不是11.0(Office2003),操作可能会出现问题。");
  31. m_objExcel.Quit();
  32. return;
  33. }

  34. m_objBooks=(Excel.Workbooks)m_objExcel.Workbooks;
  35. if(TemplateFilePath.Equals(String.Empty))
  36. {
  37. m_objBook=(Excel._Workbook)(m_objBooks.Add(m_objOpt));
  38. }
  39. else
  40. {
  41. m_objBook=m_objBooks.Open(TemplateFilePath,m_objOpt,m_objOpt,m_objOpt,m_objOpt,
  42. m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);
  43. }
  44. m_objSheets=(Excel.Sheets)m_objBook.Worksheets;
  45. m_objSheet=(Excel._Worksheet)(m_objSheets.get_Item(1));
  46. m_objExcel.WorkbookBeforeClose+=newExcel.AppEvents_WorkbookBeforeCloseEventHandler(m_objExcel_WorkbookBeforeClose);
  47. }

  48. privatevoidm_objExcel_WorkbookBeforeClose(Excel.Workbookm_objBooks,refbool_Cancel)
  49. {
  50. MessageBox.Show("保存完毕!");
  51. }

  52. /**////<summary>
  53. ///将图片插入到指定的单元格位置。
  54. ///注意:图片必须是绝对物理路径
  55. ///</summary>
  56. ///<paramname="RangeName">单元格名称,例如:B4</param>
  57. ///<paramname="PicturePath">要插入图片的绝对路径。</param>
  58. publicvoidInsertPicture(stringRangeName,stringPicturePath)
  59. {
  60. m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);
  61. m_objRange.Select();
  62. Excel.Picturespics=(Excel.Pictures)m_objSheet.Pictures(m_objOpt);
  63. pics.Insert(PicturePath,m_objOpt);
  64. }

  65. /**////<summary>
  66. ///将图片插入到指定的单元格位置,并设置图片的宽度和高度。
  67. ///注意:图片必须是绝对物理路径
  68. ///</summary>
  69. ///<paramname="RangeName">单元格名称,例如:B4</param>
  70. ///<paramname="PicturePath">要插入图片的绝对路径。</param>
  71. ///<paramname="PictuteWidth">插入后,图片在Excel中显示的宽度。</param>
  72. ///<paramname="PictureHeight">插入后,图片在Excel中显示的高度。</param>
  73. publicvoidInsertPicture(stringRangeName,stringPicturePath,floatPictuteWidth,floatPictureHeight)
  74. {
  75. m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);
  76. m_objRange.Select();
  77. floatPicLeft,PicTop;
  78. PicLeft=Convert.ToSingle(m_objRange.Left);
  79. PicTop=Convert.ToSingle(m_objRange.Top);
  80. //参数含义:
  81. //图片路径
  82. //是否链接到文件
  83. //图片插入时是否随文档一起保存
  84. //图片在文档中的坐标位置(单位:points)
  85. //图片显示的宽度和高度(单位:points)
  86. //参数详细信息参见:http://msdn2.microsoft.com/zh-cn/library/aa221765(office.11).aspx
  87. m_objSheet.Shapes.AddPicture(PicturePath,Microsoft.Office.Core.MsoTriState.msoFalse,
  88. Microsoft.Office.Core.MsoTriState.msoTrue,PicLeft,PicTop,PictuteWidth,PictureHeight);
  89. }

  90. /**////<summary>
  91. ///将Excel文件保存到指定的目录,目录必须事先存在,文件名称不一定要存在。
  92. ///</summary>
  93. ///<paramname="OutputFilePath">要保存成的文件的全路径。</param>
  94. publicvoidSaveFile(stringOutputFilePath)
  95. {
  96. m_objBook.SaveAs(OutputFilePath,m_objOpt,m_objOpt,
  97. m_objOpt,m_objOpt,m_objOpt,Excel.XlSaveAsAccessMode.xlNoChange,
  98. m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);

  99. this.Close();
  100. }
  101. /**////<summary>
  102. ///关闭应用程序
  103. ///</summary>
  104. privatevoidClose()
  105. {
  106. m_objBook.Close(false,m_objOpt,m_objOpt);
  107. m_objExcel.Quit();
  108. }

  109. /**////<summary>
  110. ///释放所引用的COM对象。注意:这个过程一定要执行。
  111. ///</summary>
  112. publicvoidDispose()
  113. {
  114. ReleaseObj(m_objSheets);
  115. ReleaseObj(m_objBook);
  116. ReleaseObj(m_objBooks);
  117. ReleaseObj(m_objExcel);
  118. System.GC.Collect();
  119. System.GC.WaitForPendingFinalizers();
  120. }
  121. /**////<summary>
  122. ///释放对象,内部调用
  123. ///</summary>
  124. ///<paramname="o"></param>
  125. privatevoidReleaseObj(objecto)
  126. {
  127. try
  128. {
  129. System.Runtime.InteropServices.Marshal.ReleaseComObject(o);
  130. }
  131. catch{}
  132. finally{o=null;}
  133. }

  134. privateExcel.Applicationm_objExcel=null;
  135. privateExcel.Workbooksm_objBooks=null;
  136. privateExcel._Workbookm_objBook=null;
  137. privateExcel.Sheetsm_objSheets=null;
  138. privateExcel._Worksheetm_objSheet=null;
  139. privateExcel.Rangem_objRange=null;
  140. privateobjectm_objOpt=System.Reflection.Missing.Value;
  141. }
  142. }

调用:

  1. InsertPicToExcelipt=newInsertPicToExcel();
  2. ipt.Open();
  3. ipt.InsertPicture("B2",@"C:/Excellogo.gif");
  4. ipt.InsertPicture("B18",@"C:/Excellogo.gif",120,80);
  5. ipt.SaveFile(@"C:/ExcelTest.xls");
  6. ipt.Dispose();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值