概述C#向Excel插入数据

开发 后端
本文介绍实现C#向Excel插入数据的方法,但各有不同的用处。现将这2种方法共享出来, 希望需要的朋友进行参考,代码中已经有详细注释了。

这几天做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. ///<summary> 
  10. ///打开没有模板的操作。  
  11. ///</summary> 
  12. publicvoidOpen()  
  13. {  
  14. this.Open(String.Empty);  
  15. }  
  16.  
  17. ///<summary> 
  18. ///功能:实现Excel应用程序的打开  
  19. ///</summary> 
  20. ///<paramnameparamname="TemplateFilePath">模板文件物理路径</param> 
  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. ///<summary> 
  55. ///将图片插入到指定的单元格位置。  
  56. ///注意:图片必须是绝对物理路径  
  57. ///</summary> 
  58. ///<paramnameparamname="RangeName">单元格名称,例如:B4</param> 
  59. ///<paramnameparamname="PicturePath">要插入图片的绝对路径。</param> 
  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. ///<summary> 
  69. ///将图片插入到指定的单元格位置,并设置图片的宽度和高度。  
  70. ///注意:图片必须是绝对物理路径  
  71. ///</summary> 
  72. ///<paramnameparamname="RangeName">单元格名称,例如:B4</param> 
  73. ///<paramnameparamname="PicturePath">要插入图片的绝对路径。</param> 
  74. ///<paramnameparamname="PictuteWidth">插入后,图片在Excel中显示的宽度。</param> 
  75. ///<paramnameparamname="PictureHeight">插入后,图片在Excel中显示的高度。</param> 
  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. ///<summary> 
  94. ///将Excel文件保存到指定的目录,目录必须事先存在,文件名称不一定要存在。  
  95. ///</summary> 
  96. ///<paramnameparamname="OutputFilePath">要保存成的文件的全路径。</param> 
  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. ///<summary> 
  106. ///关闭应用程序  
  107. ///</summary> 
  108. privatevoidClose()  
  109. {  
  110. m_objBook.Close(false,m_objOpt,m_objOpt);  
  111. m_objExcel.Quit();  
  112. }  
  113.  
  114. ///<summary> 
  115. ///释放所引用的COM对象。注意:这个过程一定要执行。  
  116. ///</summary> 
  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. ///<summary> 
  127. ///释放对象,内部调用  
  128. ///</summary> 
  129. ///<paramnameparamname="o"></param> 
  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不同点
责任编辑:佚名 来源: IT168
相关推荐

2009-08-11 14:51:47

C#读取Excel中数

2009-08-07 17:54:41

C#单元格数据

2009-09-04 18:00:54

C#数据访问层

2009-08-06 16:24:32

C#向Sql Serv

2009-08-17 17:42:57

C#数据库操作类

2009-07-31 17:01:21

C#存取Access数

2009-08-25 12:50:32

数据库常用C#代码

2009-08-31 09:44:23

C# Employee

2009-08-13 15:18:23

C#文件上传

2009-08-18 09:26:07

C#线程功能

2009-07-31 14:08:54

C# 匿名函数

2009-08-18 17:29:02

C#使用指针

2009-09-03 11:15:38

C#设置Coopera

2009-08-19 11:09:00

C# Cast<T>

2009-08-20 16:28:45

C#匿名方法

2009-08-25 10:08:39

C# MyData对象

2009-08-25 16:49:44

C#使用if语句

2009-08-24 18:09:13

C#构造函数

2009-08-17 09:57:00

C# Windows

2009-09-03 10:42:16

C# Employee
点赞
收藏

51CTO技术栈公众号