C# 操作Excel常用组件及类的浅析

开发 后端
C# 操作Excel常用组件及类都是什么呢?C# 操作Excel常用组件及类的是什么情况呢?那么本文就向你介绍C# 操作Excel常用组件及类的具体的内容

C# 操作Excel常用组件及类是什么情况呢?让我们开始吧:

C# 操作Excel常用组件及类之添加引用

添加com组件(Microsoft Office 11.0 Object Library )命名空间为Microsoft.Office.Interop.Excel

添加Excel.exe引用默认路径为C:\Program Files\Microsoft Office\OFFICE11\Excel.exe

C# 操作Excel常用组件及类之Excel控制类

  1. using System;  //C# 操作Excel常用组件及类
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Windows.Forms;  
  5. using Excel = Microsoft.Office.Interop.Excel;  
  6.  
  7. namespace ExcelOperation  
  8. {  
  9. public class ExcelControl  
  10. {  
  11. private Excel.Application m_objExcel = null;  
  12. private Excel.Workbooks m_objBooks = null;  
  13. private Excel._Workbook m_objBook = null;  
  14. private Excel.Sheets m_objSheets = null;  
  15. private Excel._Worksheet m_objSheet = null;  
  16. private Excel.Range m_objRange = null;  
  17. private object m_objOpt = System.Reflection.Missing.Value;  
  18.  
  19. /// ﹤summary﹥  
  20. /// 打开没有模板的操作。  
  21. /// ﹤/summary﹥  
  22. public void Open()  
  23. {  
  24. this.Open(String.Empty);  
  25. }  //C# 操作Excel常用组件及类
  26.  
  27. /// ﹤summary﹥  
  28. /// 功能:实现Excel应用程序的打开  
  29. /// ﹤/summary﹥  
  30. /// ﹤param name="TemplateFilePath"﹥模板文件物理路径﹤/param﹥  
  31. public void Open(string TemplateFilePath)  
  32. {  
  33. //打开对象  
  34. m_objExcel = new Excel.Application();  
  35. m_objExcel.Visible = false;  
  36. m_objExcel.DisplayAlerts = false;  
  37.  
  38. if (m_objExcel.Version != "11.0")  
  39. {  
  40. MessageBox.Show("您的 Excel 版本不是 11.0 (Office 2003),操作可能会出现问题。");  
  41. m_objExcel.Quit();  
  42. return;  
  43. }  
  44.  
  45. m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;  
  46. if (TemplateFilePath.Equals(String.Empty))  
  47. {  
  48. m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));  
  49. }  
  50. else 
  51. {  //C# 操作Excel常用组件及类
  52. m_objBook = m_objBooks.Open(TemplateFilePath,  
  53.  
  54.  m_objOpt, m_objOpt, m_objOpt, m_objOpt,  
  55. m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt,   
  56.  
  57. m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);  
  58. }  
  59. m_objSheets = (Excel.Sheets)m_objBook.Worksheets;  
  60. m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));  
  61. m_objExcel.WorkbookBeforeClose +=   
  62.  
  63. new Excel.AppEvents_WorkbookBeforeCloseEventHandler(  
  64.  
  65. m_objExcel_WorkbookBeforeClose);  
  66. }  
  67.  
  68. private void m_objExcel_WorkbookBeforeClose(  
  69.  
  70. Excel.Workbook m_objBooks, ref bool _Cancel)  
  71. {  
  72. MessageBox.Show("保存完毕!");  
  73. }  
  74.  
  75. /// ﹤summary﹥ //C# 操作Excel常用组件及类 
  76. /// 将图片插入到指定的单元格位置。  
  77. /// 注意:图片必须是绝对物理路径  
  78. /// ﹤/summary﹥  
  79. /// ﹤param name="RangeName"﹥单元格名称,例如:B4﹤/param﹥  
  80. /// ﹤param name="PicturePath"﹥要插入图片的绝对路径。﹤/param﹥  
  81. public void InsertPicture(string RangeName, string PicturePath)  
  82. {  
  83. m_objRange = m_objSheet.get_Range(RangeName, m_objOpt);  
  84. m_objRange.Select();  
  85. Excel.Pictures pics = (Excel.Pictures)m_objSheet.Pictures(m_objOpt);  
  86. pics.Insert(PicturePath, m_objOpt);  
  87. }  
  88.  
  89. /// ﹤summary﹥  
  90. /// 将图片插入到指定的单元格位置,并设置图片的宽度和高度。  
  91. /// 注意:图片必须是绝对物理路径  
  92. /// ﹤/summary﹥  
  93. /// ﹤param name="RangeName"﹥单元格名称,例如:B4﹤/param﹥  
  94. /// ﹤param name="PicturePath"﹥要插入图片的绝对路径。﹤/param﹥  
  95. /// ﹤param name="PictuteWidth"﹥插入后,图片在Excel中显示的宽度。﹤/param﹥  
  96. /// ﹤param name="PictureHeight"﹥插入后,图片在Excel中显示的高度。﹤/param﹥  
  97. public void InsertPicture(string RangeName,   
  98.  
  99. string PicturePath, float PictuteWidth, float PictureHeight)  
  100. {  
  101. m_objRange = m_objSheet.get_Range(RangeName, m_objOpt);  
  102. m_objRange.Select();  
  103. float PicLeft, PicTop;  
  104. PicLeft = Convert.ToSingle(m_objRange.Left);  
  105. PicTop = Convert.ToSingle(m_objRange.Top);  
  106. //参数含义:  C# 操作Excel常用组件及类
  107. //图片路径  
  108. //是否链接到文件  
  109. //图片插入时是否随文档一起保存  
  110. //图片在文档中的坐标位置(单位:points)  
  111. //图片显示的宽度和高度(单位:points)  
  112. //参数详细信息参见:http://msdn2.microsoft.com/zh-cn/library/aa221765(office.11).aspx  
  113. m_objSheet.Shapes.AddPicture(PicturePath,  
  114.  
  115.  Microsoft.Office.Core.MsoTriState.msoFalse,  
  116. Microsoft.Office.Core.MsoTriState.msoTrue,   
  117.  
  118. PicLeft, PicTop, PictuteWidth, PictureHeight);  
  119. }  
  120.  
  121. /// ﹤summary﹥  
  122. /// 将图片填充到Excel中的某个或某些单元格中  
  123. /// 注意:图片必须是绝对物理路径  
  124. /// ﹤/summary﹥  
  125. /// ﹤param name="RangeName"﹥单元格名称,例如:B4﹤/param﹥  
  126. /// ﹤param name="PicturePath"﹥要插入图片的绝对路径。﹤/param﹥  
  127. /// ﹤param name="PictuteWidth"﹥插入后,图片在Excel中显示的宽度。﹤/param﹥  
  128. /// ﹤param name="PictureHeight"﹥插入后,图片在Excel中显示的高度。﹤/param﹥  
  129.  
  130. /// ﹤summary﹥//C# 操作Excel常用组件及类  
  131. /// 将图片填充到Excel中的某个或某些单元格中  
  132. /// ﹤/summary﹥  
  133. /// ﹤param name="BeginRangeName"﹥插入的开始单元格﹤/param﹥  
  134. /// ﹤param name="EndRangeName"﹥插入的结束单元格﹤/param﹥  
  135. /// ﹤param name="PicturePath"﹥插入图片的绝对物理路径﹤/param﹥  
  136. /// ﹤param name="IsMergeCells"﹥是否合并上面的单元格﹤/param﹥  
  137. public void InsertPicture(string BeginRangeName,string EndRangeName,   
  138.  
  139. string PicturePath,bool IsMergeCells)  
  140. {  
  141. m_objRange = m_objSheet.get_Range(BeginRangeName,  
  142.  
  143.  EndRangeName);  
  144.  //C# 操作Excel常用组件及类
  145. //计算单元格的宽和高  
  146. float PictuteWidth, PictureHeight;  
  147. PictuteWidth = Convert.ToSingle(m_objRange.Width);  
  148. PictureHeight = Convert.ToSingle(m_objRange.Height);  
  149.  
  150. if (IsMergeCells)  
  151. {  
  152. //合并单元格  
  153. m_objRange.Merge(System.Reflection.Missing.Value);  
  154. m_objRange = m_objSheet.get_Range(BeginRangeName,  
  155.  
  156.  BeginRangeName);  
  157. }  
  158. m_objRange.Select();  
  159. float PicLeft, PicTop;  
  160. PicLeft = Convert.ToSingle(m_objRange.Left);  
  161. PicTop = Convert.ToSingle(m_objRange.Top);  
  162. //参数含义:  
  163. //图片路径  
  164. //是否链接到文件  
  165. //图片插入时是否随文档一起保存  
  166. //图片在文档中的坐标位置(单位:points)  
  167. //图片显示的宽度和高度(单位:points)  
  168. //参数详细信息参见:http://msdn2.microsoft.com/zh-cn/library/aa221765(office.11).aspx  
  169. m_objSheet.Shapes.AddPicture(PicturePath,   
  170.  
  171. Microsoft.Office.Core.MsoTriState.msoFalse,  
  172. Microsoft.Office.Core.MsoTriState.msoTrue,   
  173.  
  174. PicLeft, PicTop, PictuteWidth, PictureHeight);  
  175. }  
  176.  
  177. /// ﹤summary﹥  
  178. ///   
  179. /// ﹤/summary﹥  
  180. /// ﹤param name="BeginRangeName"﹥﹤/param﹥  
  181. /// ﹤param name="EndRangeName"﹥﹤/param﹥  
  182. /// ﹤param name="IsMergeCells"﹥﹤/param﹥  
  183. public void InsertLine(string BeginRangeName,   
  184.  
  185. string EndRangeName, bool IsMergeCells)  
  186. {  
  187. m_objRange = m_objSheet.get_Range(BeginRangeName,   
  188.  
  189. EndRangeName);  
  190.  //C# 操作Excel常用组件及类
  191. //计算单元格的宽和高  
  192. float PictureWidth, PictureHeight;  
  193. PictureWidth = Convert.ToSingle(m_objRange.Width);  
  194. PictureHeight = Convert.ToSingle(m_objRange.Height);  
  195.  
  196. if (IsMergeCells)  
  197. {  
  198. //合并单元格  
  199. m_objRange.Merge(System.Reflection.Missing.Value);  
  200. m_objRange = m_objSheet.get_Range(BeginRangeName, BeginRangeName);  
  201. }  
  202. m_objRange.Select();  
  203. float PicLeft, PicTop;  
  204. PicLeft = Convert.ToSingle(m_objRange.Left);  
  205. PicTop = Convert.ToSingle(m_objRange.Top);  
  206. //参数含义:  
  207. //线的起点(X,Y)  
  208. //线的终点(X,Y)  
  209. m_objSheet.Shapes.AddLine(PicLeft,PicTop,PicLeft +   
  210.  
  211. PictureWidth,PicTop +PictureHeight);   
  212. }  
  213.  
  214. /// ﹤summary﹥  
  215. /// 将Excel文件保存到指定的目录,目录必须事先存在,文件名称不一定要存在。  
  216. /// ﹤/summary﹥  
  217. /// ﹤param name="OutputFilePath"﹥要保存成的文件的全路径。﹤/param﹥  
  218. public void SaveFile(string OutputFilePath)  
  219. {  
  220. m_objBook.SaveAs(OutputFilePath, m_objOpt, m_objOpt,  
  221. m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,  
  222. m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);  
  223.  
  224. this.Close();  
  225. }  //C# 操作Excel常用组件及类
  226. /// ﹤summary﹥  
  227. /// 关闭应用程序  
  228. /// ﹤/summary﹥  
  229. private void Close()  
  230. {  
  231. m_objBook.Close(false, m_objOpt, m_objOpt);  
  232. m_objExcel.Quit();  
  233. }  
  234.  
  235. /// ﹤summary﹥  
  236. /// 释放所引用的COM对象。注意:这个过程一定要执行。  
  237. /// ﹤/summary﹥  
  238. public void Dispose()  
  239. {  
  240. ReleaseObj(m_objSheets);  
  241. ReleaseObj(m_objBook);  
  242. ReleaseObj(m_objBooks);  
  243. ReleaseObj(m_objExcel);  
  244. System.GC.Collect();  
  245. System.GC.WaitForPendingFinalizers();  
  246. }  
  247. /// ﹤summary﹥  
  248. /// 释放对象,内部调用  
  249. /// ﹤/summary﹥  
  250. /// ﹤param name="o"﹥﹤/param﹥  
  251. private void ReleaseObj(object o)  
  252. {  
  253. try 
  254. {  
  255. System.Runtime.InteropServices.Marshal.ReleaseComObject(o);  
  256. }  
  257. catch { }  
  258. finally { o = null; }  
  259. }  
  260.  
  261. /// ﹤summary﹥  
  262. /// 删除指定sheet下的指定行  
  263. /// ﹤/summary﹥  
  264. /// ﹤param name="SheetIndex"﹥sheet索引﹤/param﹥  
  265. /// ﹤param name="DeleteRowIndex"﹥行索引﹤/param﹥  
  266. public void DeleteRow(int SheetIndex, int DeleteRowIndex)  
  267. {  
  268. m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(SheetIndex));  
  269. m_objRange = (Excel.Range)m_objSheet.Rows[DeleteRowIndex,   
  270.  
  271. System.Reflection.Missing.Value];  
  272. m_objRange.EntireRow.Delete(Excel.XlDirection.xlToRight);  
  273. }  
  274.  
  275. /// ﹤summary﹥  
  276. /// 删除指定sheet下的指定列  
  277. /// ﹤/summary﹥  
  278. /// ﹤param name="SheetIndex"﹥sheet索引﹤/param﹥  
  279. /// ﹤param name="DeleteColumnIndex"﹥列索引﹤/param﹥  
  280. public void DeleteColumn(int SheetIndex, int DeleteColumnIndex)  
  281. {  
  282. m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(SheetIndex));  
  283. m_objRange = (Excel.Range)m_objSheet.Columns[DeleteColumnIndex,   
  284.  
  285. System.Reflection.Missing.Value];  
  286. m_objRange.EntireColumn.Delete(Excel.XlDirection.xlDown);  
  287. }  
  288. }  
  289. }  

C# 操作Excel常用组件及类的基本内容就向你介绍到这里,希望对你了解和学习C# 操作Excel常用组件及类有所帮助。

【编辑推荐】

  1. C#枚举文件的代码实现
  2. C# 操作Excel实例浅析
  3. C# 操作Excel之动态创建浅析
  4. C# 操作Excel之Delphi控件方法
  5. C# 操作Excel二维图之Delphi浅析
责任编辑:仲衡 来源: CSDN博客
相关推荐

2009-08-18 16:14:05

C# 操作Excel

2009-08-18 16:20:09

C# 操作Excel

2009-08-18 13:49:21

C# 操作Excel

2009-08-18 16:04:12

C# 操作Excel

2009-08-31 15:34:45

常用操作C# TreeView

2009-08-18 14:25:05

C# 操作Excel

2009-08-20 11:07:07

C#共享内存

2009-09-01 14:45:45

C#创建Excel文件

2009-08-21 17:24:06

C# SingleIn

2009-08-06 14:43:10

C# Calculat

2009-08-19 17:38:17

C# 操作符分类

2009-08-21 17:24:06

C# SingleIn

2009-08-17 13:34:02

C#异步操作

2009-08-18 14:46:16

C# 操作Excel

2009-08-17 17:56:32

C# 枚举

2009-08-21 09:14:47

C# Excel CO

2009-09-02 16:43:55

C#调用Excel的C

2009-08-18 10:30:30

C#枚举

2009-07-22 16:27:24

iBATIS配置类iBATIS操作类

2009-08-27 16:18:47

C#类C#结构体
点赞
收藏

51CTO技术栈公众号