概述C#向Excel插入数据

这几天做C#向Excel插入数据,其中有插入图片的需求,经试验,下面2种方法都可以实现C#向Excel插入数据,但各有不同的用处。现将这2种方法共享出来, 希望需要的朋友进行参考,代码中已经有详细注释了。

注意:使用之前需要引用COM:Microsoft Office 11.0 Object Library
如果引用列表中没有,需要自行添加 C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE

调用方法:

 
 
 
  1. MengXianhui.Utility.ExcelReport.InsertPictureToExcelipt=
    newMengXianhui.Utility.ExcelReport.InsertPictureToExcel();  
  2. ipt.Open();  
  3. ipt.InsertPicture("B2",@"C:\Excellogo.gif");  
  4. ipt.InsertPicture("B8",@"C:\Excellogo.gif",120,80);  
  5. ipt.SaveFile(@"C:\ExcelTest.xls");  
  6. ipt.Dispose(); 

简单包装的类:

 
 
 
  1. usingSystem;  
  2. usingSystem.Windows.Forms;  
  3. usingExcel=Microsoft.Office.Interop.Excel;  
  4.  
  5. namespaceMengXianhui.Utility.ExcelReport  
  6. {  
  7. classInsertPictureToExcel  
  8. {  
  9. /// 
  10. ///打开没有模板的操作。  
  11. /// 
  12. publicvoidOpen()  
  13. {  
  14. this.Open(String.Empty);  
  15. }  
  16.  
  17. /// 
  18. ///功能:实现Excel应用程序的打开  
  19. /// 
  20. ///<paramnameparamname="TemplateFilePath">模板文件物理路径 
  21. publicvoidOpen(stringTemplateFilePath)  
  22. {  
  23. //打开对象  
  24. m_objExcel=newExcel.Application();  
  25. m_objExcel.Visible=false;  
  26. m_objExcel.DisplayAlerts=false;  
  27.  
  28. if(m_objExcel.Version!="11.0")  
  29. {  
  30. MessageBox.Show("您的Excel版本不是11.0(Office2003),操作可能会出现问题。");  
  31. m_objExcel.Quit();  
  32. return;  
  33. }  
  34.  
  35. m_objBooks=(Excel.Workbooks)m_objExcel.Workbooks;  
  36. if(TemplateFilePath.Equals(String.Empty))  
  37. {  
  38. m_objBook=(Excel._Workbook)(m_objBooks.Add(m_objOpt));  
  39. }  
  40. else  
  41. {  
  42. m_objBook=m_objBooks.Open
    (TemplateFilePath,m_objOpt,m_objOpt,m_objOpt,m_objOpt,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.  
  49. privatevoidm_objExcel_WorkbookBeforeClose(Excel.Workbookm_objBooks,refbool_Cancel)  
  50. {  
  51. MessageBox.Show("保存完毕!");  
  52. }  
  53.  
  54. /// 
  55. ///将图片插入到指定的单元格位置。  
  56. ///注意:图片必须是绝对物理路径  
  57. /// 
  58. ///<paramnameparamname="RangeName">单元格名称,例如:B4 
  59. ///<paramnameparamname="PicturePath">要插入图片的绝对路径。 
  60. publicvoidInsertPicture(stringRangeName,stringPicturePath)  
  61. {  
  62. m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);  
  63. m_objRange.Select();  
  64. Excel.Picturespics=(Excel.Pictures)m_objSheet.Pictures(m_objOpt);  
  65. pics.Insert(PicturePath,m_objOpt);  
  66. }  
  67.  
  68. /// 
  69. ///将图片插入到指定的单元格位置,并设置图片的宽度和高度。  
  70. ///注意:图片必须是绝对物理路径  
  71. /// 
  72. ///<paramnameparamname="RangeName">单元格名称,例如:B4 
  73. ///<paramnameparamname="PicturePath">要插入图片的绝对路径。 
  74. ///<paramnameparamname="PictuteWidth">插入后,图片在Excel中显示的宽度。 
  75. ///<paramnameparamname="PictureHeight">插入后,图片在Excel中显示的高度。 
  76. publicvoidInsertPicture
    (stringRangeName,stringPicturePath,floatPictuteWidth,floatPictureHeight)  
  77. {  
  78. m_objRange=m_objSheet.get_Range(RangeName,m_objOpt);  
  79. m_objRange.Select();  
  80. floatPicLeft,PicTop;  
  81. PicLeft=Convert.ToSingle(m_objRange.Left);  
  82. PicTop=Convert.ToSingle(m_objRange.Top);  
  83. //参数含义:  
  84. //图片路径  
  85. //是否链接到文件  
  86. //图片插入时是否随文档一起保存  
  87. //图片在文档中的坐标位置(单位:points)  
  88. //图片显示的宽度和高度(单位:points)  
  89. //参数详细信息参见:http://msdn2.microsoft.com/zh-cn/library/aa221765(office.11).aspx  
  90. m_objSheet.Shapes.AddPicture(PicturePath,Microsoft.Office.Core.MsoTriState.
    msoFalse,Microsoft.Office.Core.MsoTriState.msoTrue,PicLeft,PicTop,
    PictuteWidth,PictureHeight);  
  91. }  
  92.  
  93. /// 
  94. ///将Excel文件保存到指定的目录,目录必须事先存在,文件名称不一定要存在。  
  95. /// 
  96. ///<paramnameparamname="OutputFilePath">要保存成的文件的全路径。 
  97. publicvoidSaveFile(stringOutputFilePath)  
  98. {  
  99. m_objBook.SaveAs(OutputFilePath,m_objOpt,m_objOpt,  
  100. m_objOpt,m_objOpt,m_objOpt,Excel.XlSaveAsAccessMode.xlNoChange,  
  101. m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt);  
  102.  
  103. this.Close();  
  104. }  
  105. /// 
  106. ///关闭应用程序  
  107. /// 
  108. privatevoidClose()  
  109. {  
  110. m_objBook.Close(false,m_objOpt,m_objOpt);  
  111. m_objExcel.Quit();  
  112. }  
  113.  
  114. /// 
  115. ///释放所引用的COM对象。注意:这个过程一定要执行。  
  116. /// 
  117. publicvoidDispose()  
  118. {  
  119. ReleaseObj(m_objSheets);  
  120. ReleaseObj(m_objBook);  
  121. ReleaseObj(m_objBooks);  
  122. ReleaseObj(m_objExcel);  
  123. System.GC.Collect();  
  124. System.GC.WaitForPendingFinalizers();  
  125. }  
  126. /// 
  127. ///释放对象,内部调用  
  128. /// 
  129. ///<paramnameparamname="o"> 
  130. privatevoidReleaseObj(objecto)  
  131. {  
  132. try  
  133. {  
  134. System.Runtime.InteropServices.Marshal.ReleaseComObject(o);  
  135. }  
  136. catch{}  
  137. finally{o=null;}  
  138. }  
  139.  
  140. privateExcel.Applicationm_objExcel=null;  
  141. privateExcel.Workbooksm_objBooks=null;  
  142. privateExcel._Workbookm_objBook=null;  
  143. privateExcel.Sheetsm_objSheets=null;  
  144. privateExcel._Worksheetm_objSheet=null;  
  145. privateExcel.Rangem_objRange=null;  
  146. privateobjectm_objOpt=System.Reflection.Missing.Value;  
  147. }  

以上介绍C#向Excel插入数据

【编辑推荐】

  1. 定义C#接口学习经验
  2. C# ListBox学习笔记
  3. 操作C# Dataset介绍
  4. C# ODBC访问MySQL数据库
  5. 浅析C#和Java不同点

分享标题:概述C#向Excel插入数据
本文路径:http://www.shufengxianlan.com/qtweb/news49/372949.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联