已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#操作Excel总结 Excel 基本操作查看Excel中宏的方法如下:ALT+F110. 导入命名空间:view source print?1using Microsoft.Office.Core; 2using Microsoft.Office.Interop.Excel; 3using System.IO; 4using System.Reflection;1. 如何打开已有excel文档,或者创建一个新的excel文档view source print?1Application app = new Application(); 2Workbooks wbks = app.Workbooks; 3_Workbook _wbk = wbks.Add(xxx);若打开已有excel,把“xxx”替换成该excel的文件路径; 注:若新建一个excel文档,“xxx”替换成true即可;不过这里新建的excel文档默认只有一个sheet。 2. 取得、删除和添加sheetview source print?1Sheets shs = _wbk.Sheets;2.1取得:view source print?1/i是要取得的sheet的index 2_Worksheet _wsh = (_Worksheet)shs.get_Item(i)2.2 删除:view source print?1/删除sheet必须的设置 2app.DisplayAlerts = false; 3_wsh.Delete();2.3 添加:view source print?1/a(before),b(after):确定添加位置;c:数目;d:类型 2app.Worksheets.Add(a,b,c,d);2.4 sheet的重命名view source print?1_wsh.Name = xxx;3. 删除行和列 3.1 删除行:view source print?1(Range)_wsh.Rows3, Missing.Value).Delete(XlDeleteShiftDirection.xlShiftUp);3.2 删除列:view source print?1_wsh.get_Range( 2_wsh.Cells1, 2, 3_wsh.Cells_wsh.Rows.Count, 2).Delete(XlDeleteShiftDirection.xlShiftToLeft 4);4. 添加行和列 4.1 添加行:view source print?1(Range)_wsh.Rows11, Missing.Value) 2.Insert(Missing.Value, XlInsertFormatOrigin.xlFormatFromLeftOrAbove);4.2 添加列:view source print?1_wsh.get_Range( 2_wsh.Cells1, 1, _wsh.Cells_wsh.Rows.Count, 1) 3.Insert(Missing.Value, XlInsertShiftDirection.xlShiftToRight);5. 单元格操作 5.1 单元格的取得view source print?1/获得单元格对象 2_wsh.Cellsrow, cell5.2 设置公式view source print?1/在对应的单元格输入公式即可 2_wsh.Cellsrow, cell = =Sum(A1/B1);5.3 合并单元格view source print?1(Range)_wsh.Rows1, Missing.Value).Merge(Missing.Value);5.4 设置行高和列宽view source print?1(Range)_wsh.Rows3, Missing.Value).RowHeight = 5; 2(Range)_wsh.Rows3, Missing.Value).ColumnWidth = 5;5.5 设置单元格颜色 颜色共有56中,详情请参照附录的颜色对照表view source print?1(Range)_wsh.Rows1, Missing.Value).Interior.ColorIndex = 3;5.6 设置字号view source print?1(Range)_wsh.Cells1, B).Font.Size = 8;5.7 是否设置粗体view source print?1(Range)_wsh.Rows1, Missing.Value).Font.Bold = false;5.8 单元格/区域、水平垂直居中view source print?1(Range)_wsh.Cells2, 1).HorizontalAlignment = XlVAlign.xlVAlignCenter;5.9 设置区域边框view source print?1(Range)_wsh.Cells3, 3).Borders.LineStyle = 3;5.10 设置边框的上、下、左、右线条view source print?01/左 02_wsh.get_Range( 03_wsh.Cells2, 1, _wsh.Cells2, 2) 04.BordersXlBordersIndex.xlEdgeLeft.Weight = XlBorderWeight.xlThick;/ 0506/右 07_wsh.get_Range( 08_wsh.Cells2, 1, _wsh.Cells2, 2) 09.BordersXlBordersIndex.xlEdgeRight.Weight = XlBorderWeight.xlThick;/ 1011/上 12_wsh.get_Range( 13_wsh.Cells2, 1, _wsh.Cells2, 2) 14.BordersXlBordersIndex.xlEdgeTop.Weight = XlBorderWeight.xlThick;/下 1516/下 17_wsh.get_Range( 18_wsh.Cells2, 1, _wsh.Cells2, 2) 19.BordersXlBordersIndex.xlEdgeBottom.Weight = XlBorderWeight.xlThick;自动换行range.WrapText6. 指定区域的复制view source print?01_Worksheet _wsh = (_Worksheet)shs.get_Item(1);/复制选中区域的内容 0203Range range = _wsh.get_Range(_wsh.Cells7, 1, _wsh.Cells10, _wsh.Columns.Count); 0405range.Select(); 06range.Copy(Type.Missing); 0708/选中粘贴的起始位置 09Range test = (Range)_wsh.Cells11, 1); 10test.Select(); 1112/屏蔽掉Alert,默认确定粘贴 13app.DisplayAlerts = false; 14test.Parse(Missing.Value, Missing.Value);注:Type.Missing和Missing.Value,在excel的操作中被视为某些参数的默认值,他们起到的作用很多时候是形式补足参数 7. excel文件的保存,及后续处理 7.1 文件保存view source print?1/屏蔽掉系统跳出的Alert 2app.AlertBeforeOverwriting = false; 34/保存到指定目录 5SaveAs(filePath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);注:这个地方只能采用该方法保存,不然在指定路径下保存文件外,在我的文档中也会生成一个对应的副本 7.2 后续处理:退出和释放view source print?1/_wbk.Close(null, null, null); 2/wbks.Close(); 3app.Quit(); 45/释放掉多余的excel进程 6System.Runtime.InteropServices.Marshal.ReleaseComObject(app); 7app = null;说明:在application关闭的过程中,通常我们有两种方案: #直接退出app #先关闭workbook,然后关闭workbooks,最后在退出app 鉴于这两种方式,或许本质上是一样的(这点需要证明),但是依据我们软件开发的原则:哪里需要哪里声明,哪里结束哪里释放回收。 既然在直接退出app的时候,我们不清楚workbook和workbooks具体在什么时间关闭,不如在结束的时候直接手动关闭,这样做可以做到资源的快速直接回收; 所以,建议采用先关闭workbook,然后关闭workbooks,最后在退出app。 8. 关于单元格设置域和取得域里需要的数据 8.1 若单元格已经设置为下拉框view source print?1/这里的“1,2,3”设置的就是下拉框的值 2(Range)_wsh.Cells2, 1) 3.Validation.Modify(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, Type.Missing, 1,2,3, Type.Missing);8.2 若单元格还没有设置为下拉框的形式view source print?1(Range)_wsh.Cells2, 1) 2.Validation.Add(XlDVType.xlValidateList, XlDVAlertStyle.xlValidAlertStop, Type.Missing,1,2,3, Type.Missing);8.3 取得下拉框域的值view source print?1string strValue = (Range)_wsh.Cells2, 1).Validation.Formula1;注:若在excel模板中通过有效性设定了下拉框的值,strValue得到的将会是excel里的公式,需将其转换, 取得strValue后,可以根据其索引得到你需要的数值; 9. 隐藏行和隐藏列 9.1 隐藏行view source print?1_wsh.get_Range(_wsh.Cells19, 1, _wsh.Cells22, 1).EntireRow.Hidden = true;9.2 隐藏列view source print?1_wsh.get_Range(_wsh.Cells1, 1, _wsh.Cells_wsh.Rows.Count, 1) 2.EntireColumn.Hidden = true;10锁定指定区域Range.Locked11.Excel中插入图片1.using System;2.using System.Collections.Generic;3.using System.Text;4./using Excel = Microsoft.Office.Interop.Excel; 5.using Excel;6.using System.Windows.Forms;7. 8. 9. namespace ExcelReport10. 11. class InsertPicToExcel12. 13. /*/ 14. / 打开没有模板的操作。 15. / 16. public void Open()17. 18. this.Open(String.Empty);19. 20.21. /*/ 22. / 功能:实现Excel应用程序的打开 23. / 24. / 模板文件物理路径 25. public void Open(string TemplateFilePath)26. 27. /打开对象 28. m_objExcel = new Excel.Application();29. m_objExcel.Visible = false;30. m_objExcel.DisplayAlerts = false;31.32. if (m_objExcel.Version != 11.0)33. 34. MessageBox.Show(您的 Excel 版本不是 11.0 (Office 2003),操作可能会出现问题。);35. m_objExcel.Quit();36. return;37. 38.39. m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;40. if (TemplateFilePath.Equals(String.Empty)41. 42. m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt);43. 44. else45. 46. m_objBook = m_objBooks.Open(TemplateFilePath, m_objOpt, m_objOpt, m_objOpt, m_objOpt,47. m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);48. 49. m_objSheets = (Excel.Sheets)m_objBook.Worksheets;50. m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1);51. m_objExcel.WorkbookBeforeClose += new Excel.AppEvents_WorkbookBeforeCloseEventHandler(m_objExcel_WorkbookBeforeClose);52. 53.54. private void m_objExcel_WorkbookBeforeClose(Excel.Workbook m_objBooks, ref bool _Cancel)55. 56. MessageBox.Show(保存完毕!);57. 58.59. /*/ 60. / 将图片插入到指定的单元格位置。 61. / 注意:图片必须是绝对物理路径 62. / 63. / 单元格名称,例如:B4 64. / 要插入图片的绝对路径。 65. public void InsertPicture(string RangeName, string PicturePath)66. 67. m_objRange = m_objSheet.get_Range(RangeName, m_objOpt);68. m_objRange.Select();69. Excel.Pictures pics = (Excel.Pictures)m_objSheet.Pictures(m_objOpt);70. pics.Insert(PicturePath, m_objOpt);71. 72.73. /*/ 74. / 将图片插入到指定的单元格位置,并设置图片的宽度和高度。 75. / 注意:图片必须是绝对物理路径 76. / 77. / 单元格名称,例如:B4 78. / 要插入图片的绝对路径。 79. / 插入后,图片在Excel中显示的宽度。 80. / 插入后,图片在Excel中显示的高度。 81. public void InsertPicture(string RangeName, string PicturePath, float PictuteWidth, float PictureHeight)82. 83. m_objRange = m_objSheet.get_Range(RangeName, m_objOpt);84. m_objRange.Select();85. float PicLeft, PicTop;86. PicLeft = Convert.ToSingle(m_objRange.Left);87. PicTop = Convert.ToSingle(m_objRange.Top);88. /参数含义: 89. /图片路径 90. /是否链接到文件 91. /图片插入时是否随文档一起保存 92. /图片在文档中的坐标位置(单位:points) 93. /图片显示的宽度和高度(单位:points) 94. /参数详细信息参见:/zh-cn/library/aa221765(office.11).aspx 95. m_objSheet.Shapes.AddPicture(PicturePath,Microsoft.Office.Core.MsoTriState.msoFalse,96. Microsoft.Office.Core.MsoTriState.msoTrue, PicLeft, PicTop, PictuteWidth, PictureHeight);97. 98.99. /*/ 100. / 将Excel文件保存到指定的目录,目录必须事先存在,文件名称不一定要存在。 101. / 102. / 要保存成的文件的全路径。 103. public void SaveFile(string OutputFilePath)104. 105. m_objBook.SaveAs(OutputFilePath, m_objOpt, m_objOpt,106. m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange,107. m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);108.109. this.Close();110. 111. /*/ 112. / 关闭应用程序 113. / 114. private void Close()115. 116. m_objBook.Close(false, m_objOpt, m_objOpt);117. m_objExcel.Quit();118. 119.120. /*/ 121. / 释放所引用的COM对象。注意:这个过程一定要执行。 122. / 123. public void Dispose()124. 125. ReleaseObj(m_objSheets);126. ReleaseObj(m_objBook);127. ReleaseObj(m_objBooks);128. ReleaseObj(m_objExcel);129. System.GC.Collect();130. System.GC.WaitForPendingFinalizers();131. 132. /*/ 133. / 释放对象,内部调用 134. / 135. / 136. private void ReleaseObj(object o)137. 138. try139. 140. System.Runtime.InteropServices.Marshal.ReleaseComObject(o);141. 142. catch 143. finally o = null; 144. 145.146. private Excel.Application m_objExcel = null;147. private Excel.Workbooks m_objBooks = null;148. private Excel._Workbook m_objBook = null;149. private Excel.Sheets m_objSheets = null;150. private Excel._Worksheet m_objSheet = null;151. private Excel.Range m_objRange = null;152. private object m_objOpt = System.Reflection.Missing.Value;153. 154. 155.156. 调用: 1.InsertPicToExcel ipt = new InsertPicToExcel();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();7.【Excel】行高和列宽单位的换算 默认情况下,Excel的行高为14.25(19像素),列宽为8.38(72像素),单位无法直接用毫米(mm)或厘米(cm)表示,需要换算,换算表如下。 =像素 磅 英寸 毫米 厘米 十二点活字96 72 1 25.4 2.54 6=行高是以磅为单位1个单位=1磅=4/3像素=0.3528mm(25.4/72)1mm=2.835个单位(72/25.4)列宽与EXCEL的标准字体有关“帮助”中说出现在“标准列宽”框中的数字为适合于单元格的标准字体的数字 0-9 的平均值。【注解】 标准字体是指“EXCEL”-“工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司铁水预处理工应急处置技术规程
- 通知期制度与雇主绩效考核-洞察与解读
- 载人基地农业-洞察与解读
- 四川省成都市外国语学校2025年物理高一第一学期期末学业质量监测试题含解析
- 浙江警官职业学院《古生物学》2024-2025学年第一学期期末试卷
- 地质处置技术优化-洞察与解读
- 河南省郑州市八校2026届化学高一上期中统考试题含解析
- 天津中德应用技术大学《综合俄语Ⅲ》2024-2025学年第一学期期末试卷
- 黑龙江省哈尔滨市阿城区第二中学2025-2026学年化学高二第一学期期末预测试题含解析
- 忻州一中2026届高二上物理期末学业质量监测试题含解析
- 荣誉证书模板word版,可编辑打印
- 八年级数学上册知识点测试题
- 【详细版】小学英语外研新标准六年级上册Module8六年级上册英语教案Module8Unit1
- 中国矿业权评估准则
- 面积和代数恒等式市公开课金奖市赛课一等奖课件
- 送元二使安西(市一等奖)-完整版获奖课件
- 日语专八语法
- 幼儿绘本故事:东郭先生和狼
- 食堂搭伙协议参考
- 10kv线路带电跨越施工方案
- ArcGIS10软件入门培训教程PPT课件
评论
0/150
提交评论