1. using System;
  2. using System.Web;
  3. using Excel = Microsoft.Office.Interop.Excel;
  4.  
  5. namespace Comm
  6. {
  7. /// <summary>
  8. /// ExcelOperate 的摘要说明。Excel操作函数
  9. /// </summary>
  10. public class ExcelOperate
  11. {
  12. private object mValue = System.Reflection.Missing.Value;
  13.  
  14. public ExcelOperate()
  15. {
  16. //
  17. // TODO: 在此处添加构造函数逻辑
  18. //
  19. }
  20.  
  21. /// <summary>
  22. /// 合并单元格
  23. /// </summary>
  24. /// <param name="CurSheet">Worksheet</param>
  25. /// <param name="objStartCell">开始单元格</param>
  26. /// <param name="objEndCell">结束单元格</param>
  27. public void Merge(Excel._Worksheet CurSheet, object objStartCell, object objEndCell)
  28. {
  29. CurSheet.get_Range(objStartCell, objEndCell).Merge(mValue);
  30. }
  31. /// <summary>
  32. /// 设置连续区域的字体大小
  33. /// </summary>
  34. /// <param name="CurSheet">Worksheet</param>
  35. /// <param name="strStartCell">开始单元格</param>
  36. /// <param name="strEndCell">结束单元格</param>
  37. /// <param name="intFontSize">字体大小</param>
  38. public void SetFontSize(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, int intFontSize)
  39. {
  40. CurSheet.get_Range(objStartCell, objEndCell).Font.Size = intFontSize.ToString();
  41. }
  42.  
  43. /// <summary>
  44. /// 横向打印
  45. /// </summary>
  46. /// <param name="CurSheet"></param>
  47. public void xlLandscape(Excel._Worksheet CurSheet)
  48. {
  49. CurSheet.PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape;
  50.  
  51. }
  52. /// <summary>
  53. /// 纵向打印
  54. /// </summary>
  55. /// <param name="CurSheet"></param>
  56. public void xlPortrait(Excel._Worksheet CurSheet)
  57. {
  58. CurSheet.PageSetup.Orientation = Excel.XlPageOrientation.xlPortrait;
  59. }
  60.  
  61. /// <summary>
  62. /// 在指定单元格插入指定的值
  63. /// </summary>
  64. /// <param name="CurSheet">Worksheet</param>
  65. /// <param name="Cell">单元格 如Cells[1,1]</param>
  66. /// <param name="objValue">文本、数字等值</param>
  67. public void WriteCell(Excel._Worksheet CurSheet, object objCell, object objValue)
  68. {
  69. CurSheet.get_Range(objCell, mValue).Value2 = objValue;
  70.  
  71. }
  72.  
  73. /// <summary>
  74. /// 在指定Range中插入指定的值
  75. /// </summary>
  76. /// <param name="CurSheet">Worksheet</param>
  77. /// <param name="StartCell">开始单元格</param>
  78. /// <param name="EndCell">结束单元格</param>
  79. /// <param name="objValue">文本、数字等值</param>
  80. public void WriteRange(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, object objValue)
  81. {
  82. CurSheet.get_Range(objStartCell, objEndCell).Value2 = objValue;
  83. }
  84.  
  85. /// <summary>
  86. /// 合并单元格,并在合并后的单元格中插入指定的值
  87. /// </summary>
  88. /// <param name="CurSheet">Worksheet</param>
  89. /// <param name="objStartCell">开始单元格</param>
  90. /// <param name="objEndCell">结束单元格</param>
  91. /// <param name="objValue">文本、数字等值</param>
  92. public void WriteAfterMerge(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, object objValue)
  93. {
  94. CurSheet.get_Range(objStartCell, objEndCell).Merge(mValue);
  95. CurSheet.get_Range(objStartCell, mValue).Value2 = objValue;
  96.  
  97. }
  98.  
  99. /// <summary>
  100. /// 为单元格设置公式
  101. /// </summary>
  102. /// <param name="CurSheet">Worksheet</param>
  103. /// <param name="objCell">单元格</param>
  104. /// <param name="strFormula">公式</param>
  105. public void SetFormula(Excel._Worksheet CurSheet, object objCell, string strFormula)
  106. {
  107. CurSheet.get_Range(objCell, mValue).Formula = strFormula;
  108. }
  109.  
  110. /// <summary>
  111. /// 单元格自动换行
  112. /// </summary>
  113. /// <param name="CurSheet">Worksheet</param>
  114. /// <param name="objStartCell">开始单元格</param>
  115. /// <param name="objEndCell">结束单元格</param>
  116. public void AutoWrapText(Excel._Worksheet CurSheet, object objStartCell, object objEndCell)
  117. {
  118. CurSheet.get_Range(objStartCell, objEndCell).WrapText = true;
  119. }
  120.  
  121. /// <summary>
  122. /// 设置整个连续区域的字体颜色
  123. /// </summary>
  124. /// <param name="CurSheet">Worksheet</param>
  125. /// <param name="objStartCell">开始单元格</param>
  126. /// <param name="objEndCell">结束单元格</param>
  127. /// <param name="clrColor">颜色</param>
  128. public void SetColor(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, System.Drawing.Color clrColor)
  129. {
  130. CurSheet.get_Range(objStartCell, objEndCell).Font.Color = System.Drawing.ColorTranslator.ToOle(clrColor);
  131. }
  132.  
  133. /// <summary>
  134. /// 设置整个连续区域的单元格背景色
  135. /// </summary>
  136. /// <param name="CurSheet"></param>
  137. /// <param name="objStartCell"></param>
  138. /// <param name="objEndCell"></param>
  139. /// <param name="clrColor"></param>
  140. public void SetBgColor(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, System.Drawing.Color clrColor)
  141. {
  142. CurSheet.get_Range(objStartCell, objEndCell).Interior.Color = System.Drawing.ColorTranslator.ToOle(clrColor);
  143. }
  144.  
  145. /// <summary>
  146. /// 设置连续区域的字体名称
  147. /// </summary>
  148. /// <param name="CurSheet">Worksheet</param>
  149. /// <param name="objStartCell">开始单元格</param>
  150. /// <param name="objEndCell">结束单元格</param>
  151. /// <param name="fontname">字体名称 隶书、仿宋_GB2312等</param>
  152. public void SetFontName(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, string fontname)
  153. {
  154. CurSheet.get_Range(objStartCell, objEndCell).Font.Name = fontname;
  155. }
  156.  
  157. /// <summary>
  158. /// 设置连续区域的字体为黑体
  159. /// </summary>
  160. /// <param name="CurSheet">Worksheet</param>
  161. /// <param name="objStartCell">开始单元格</param>
  162. /// <param name="objEndCell">结束单元格</param>
  163. public void SetBold(Excel._Worksheet CurSheet, object objStartCell, object objEndCell)
  164. {
  165. CurSheet.get_Range(objStartCell, objEndCell).Font.Bold = true;
  166. }
  167.  
  168. /// <summary>
  169. /// 设置连续区域的边框:上下左右都为黑色连续边框
  170. /// </summary>
  171. /// <param name="CurSheet">Worksheet</param>
  172. /// <param name="objStartCell">开始单元格</param>
  173. /// <param name="objEndCell">结束单元格</param>
  174. public void SetBorderAll(Excel._Worksheet CurSheet, object objStartCell, object objEndCell)
  175. {
  176. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeTop].Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
  177. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
  178.  
  179. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeBottom].Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
  180. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
  181.  
  182. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeLeft].Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
  183. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
  184.  
  185. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeRight].Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
  186. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
  187.  
  188. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlInsideHorizontal].Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
  189. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;
  190.  
  191. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlInsideVertical].Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGray);
  192. CurSheet.get_Range(objStartCell, objEndCell).Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
  193.  
  194. }
  195.  
  196. /// <summary>
  197. /// 设置连续区域水平居中
  198. /// </summary>
  199. /// <param name="CurSheet">Worksheet</param>
  200. /// <param name="objStartCell">开始单元格</param>
  201. /// <param name="objEndCell">结束单元格</param>
  202. public void SetHAlignCenter(Excel._Worksheet CurSheet, object objStartCell, object objEndCell)
  203. {
  204. CurSheet.get_Range(objStartCell, objEndCell).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
  205. }
  206.  
  207. /// <summary>
  208. /// 设置连续区域水平居左
  209. /// </summary>
  210. /// <param name="CurSheet">Worksheet</param>
  211. /// <param name="objStartCell">开始单元格</param>
  212. /// <param name="objEndCell">结束单元格</param>
  213. public void SetHAlignLeft(Excel._Worksheet CurSheet, object objStartCell, object objEndCell)
  214. {
  215. CurSheet.get_Range(objStartCell, objEndCell).HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
  216. }
  217.  
  218. /// <summary>
  219. /// 设置连续区域水平居右
  220. /// </summary>
  221. /// <param name="CurSheet">Worksheet</param>
  222. /// <param name="objStartCell">开始单元格</param>
  223. /// <param name="objEndCell">结束单元格</param>
  224. public void SetHAlignRight(Excel._Worksheet CurSheet, object objStartCell, object objEndCell)
  225. {
  226. CurSheet.get_Range(objStartCell, objEndCell).HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
  227. }
  228.  
  229. /// <summary>
  230. /// 设置连续区域的显示格式
  231. /// </summary>
  232. /// <param name="CurSheet">Worksheet</param>
  233. /// <param name="objStartCell">开始单元格</param>
  234. /// <param name="objEndCell">结束单元格</param>
  235. /// <param name="strNF">如"#,##0.00"的显示格式</param>
  236. public void SetNumberFormat(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, string strNF)
  237. {
  238. CurSheet.get_Range(objStartCell, objEndCell).NumberFormat = strNF;
  239. }
  240.  
  241. /// <summary>
  242. /// 设置列宽
  243. /// </summary>
  244. /// <param name="CurSheet">Worksheet</param>
  245. /// <param name="strColID">列标识,如A代表第一列</param>
  246. /// <param name="dblWidth">宽度</param>
  247. public void SetColumnWidth(Excel._Worksheet CurSheet, string strColID, double dblWidth)
  248. {
  249. ((Excel.Range)CurSheet.Columns.GetType().InvokeMember("Item", System.Reflection.BindingFlags.GetProperty, null, CurSheet.Columns, new object[] { (strColID + ":" + strColID).ToString() })).ColumnWidth = dblWidth;
  250. }
  251.  
  252. /// <summary>
  253. /// 设置列宽
  254. /// </summary>
  255. /// <param name="CurSheet">Worksheet</param>
  256. /// <param name="objStartCell">开始单元格</param>
  257. /// <param name="objEndCell">结束单元格</param>
  258. /// <param name="dblWidth">宽度</param>
  259. public void SetColumnWidth(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, double dblWidth)
  260. {
  261. CurSheet.get_Range(objStartCell, objEndCell).ColumnWidth = dblWidth;
  262. }
  263.  
  264. /// <summary>
  265. /// 设置行高
  266. /// </summary>
  267. /// <param name="CurSheet">Worksheet</param>
  268. /// <param name="objStartCell">开始单元格</param>
  269. /// <param name="objEndCell">结束单元格</param>
  270. /// <param name="dblHeight">行高</param>
  271. public void SetRowHeight(Excel._Worksheet CurSheet, object objStartCell, object objEndCell, double dblHeight)
  272. {
  273. CurSheet.get_Range(objStartCell, objEndCell).RowHeight = dblHeight;
  274. }
  275.  
  276. /// <summary>
  277. /// 为单元格添加超级链接
  278. /// </summary>
  279. /// <param name="CurSheet">Worksheet</param>
  280. /// <param name="objCell">单元格</param>
  281. /// <param name="strAddress">链接地址</param>
  282. /// <param name="strTip">屏幕提示</param>
  283. /// <param name="strText">链接文本</param>
  284. public void AddHyperLink(Excel._Worksheet CurSheet, object objCell, string strAddress, string strTip, string strText)
  285. {
  286. CurSheet.Hyperlinks.Add(CurSheet.get_Range(objCell, objCell), strAddress, mValue, strTip, strText);
  287. }
  288.  
  289. /// <summary>
  290. /// 另存为xls文件
  291. /// </summary>
  292. /// <param name="CurBook">Workbook</param>
  293. /// <param name="strFilePath">文件路径</param>
  294. public void Save(Excel._Workbook CurBook, string strFilePath)
  295. {
  296. CurBook.SaveCopyAs(strFilePath);
  297. }
  298.  
  299. /// <summary>
  300. /// 保存文件
  301. /// </summary>
  302. /// <param name="CurBook">Workbook</param>
  303. /// <param name="strFilePath">文件路径</param>
  304. public void SaveAs(Excel._Workbook CurBook, string strFilePath)
  305. {
  306. CurBook.SaveAs(strFilePath, mValue, mValue, mValue, mValue, mValue, Excel.XlSaveAsAccessMode.xlShared, mValue, mValue, mValue, mValue, mValue);
  307. }
  308.  
  309. /// <summary>
  310. /// 另存为html文件
  311. /// </summary>
  312. /// <param name="CurBook">Workbook</param>
  313. /// <param name="strFilePath">文件路径</param>
  314. public void SaveHtml(Excel._Workbook CurBook, string strFilePath)
  315. {
  316. CurBook.SaveAs(strFilePath, Excel.XlFileFormat.xlHtml, mValue, mValue, mValue, mValue, Excel.XlSaveAsAccessMode.xlNoChange, mValue, mValue, mValue, mValue, mValue);
  317. }
  318.  
  319. /// <summary>
  320. /// 释放内存
  321. /// </summary>
  322. public void Dispose(Excel._Worksheet CurSheet, Excel._Workbook CurBook, Excel._Application CurExcel)
  323. {
  324. try
  325. {
  326. System.Runtime.InteropServices.Marshal.ReleaseComObject(CurSheet);
  327. CurSheet = null;
  328. CurBook.Close(false, mValue, mValue);
  329. System.Runtime.InteropServices.Marshal.ReleaseComObject(CurBook);
  330. CurBook = null;
  331.  
  332. CurExcel.Quit();
  333. System.Runtime.InteropServices.Marshal.ReleaseComObject(CurExcel);
  334. CurExcel = null;
  335.  
  336. GC.Collect();
  337. GC.WaitForPendingFinalizers();
  338. }
  339. catch (System.Exception ex)
  340. {
  341. HttpContext.Current.Response.Write("在释放Excel内存空间时发生了一个错误:" + ex);
  342. }
  343. finally
  344. {
  345. foreach (System.Diagnostics.Process pro in System.Diagnostics.Process.GetProcessesByName("Excel"))
  346. //if (pro.StartTime < DateTime.Now)
  347. pro.Kill();
  348. }
  349. System.GC.SuppressFinalize(this);
  350.  
  351. }
  352.  
  353. }
  354. }

.NET的ExcelOperate的更多相关文章

  1. Npoi导入导出Excel操作

    之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...

  2. C#导出EXCEL的几种方法

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...

  3. 读取本地excel发短信

    package com.cmcc.zysoft.sellmanager.controller; import java.io.File; import java.io.FileInputStream; ...

  4. POI读入excel文件到Java中

    package Poi_Test; //导入java自带的包 import java.io.BufferedInputStream; import java.io.File; import java. ...

  5. C#导出EXCEL的方法

    /// using System; using System.Collections.Generic; using System.Text; using System.Data; using Syst ...

  6. java 读取excel 正常 xls

    package com.sun.test; import java.io.BufferedInputStream;import java.io.File;import java.io.FileInpu ...

  7. java 读取excel文件(只读取xls文件)

    package com.sun.test; import java.io.BufferedInputStream;import java.io.File;import java.io.FileInpu ...

  8. java读取Excel文档插入mysql

    /** * 读取excel插入myslq */package com.excel; import java.io.BufferedInputStream;import java.io.File;imp ...

  9. C# 导出Excel的示例(转)

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...

随机推荐

  1. The first day to learn Englisht

    IF you want to go fast,to alone. IF you want to go far,go with others.

  2. 哈希(Hash)与加密(Encrypt)相关内容

    1.哈希(Hash)与加密(Encrypt)的区别 哈希(Hash)是将目标文本转换成具有相同长度的.不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的.可 ...

  3. 在Visual Studio中使用Git命令提示符

    VS2015自带了Git插件,但有时候我觉得Git控制台命令更方便些. VS中本身不能把Git Bush作为浮动窗集成进来,但我们可以通过Power Shell来使用Git命令. ---------- ...

  4. GitHub菜鸟日志1——20160531

    好吧,事实上很早就知道有github这个东西了,然而就有一种莫名的力量一直阻止着我向这“未知的领域”涉足(which is called lazy). 然后,前略...总之,默默的就开始了github ...

  5. Robot_bfs

    Description The Robot Moving Institute is using a robot in their local store to transport different ...

  6. PHP中CURL方法curl_setopt()函数的一些参数

    bool curl_setopt (int ch, string option, mixed value)curl_setopt()函数将为一个CURL会话设置选项.option参数是你想要的设置,v ...

  7. sumoselect插件

    由于项目需要,研究了下sumoselect插件,接下来简单介绍下sumoselect. 在百度上搜索“sumoselect.js”,查到的网页基本上都有对sumoselect的基本介绍,如下: 简单介 ...

  8. Bool 类型变量的使用

    定义一个bool类型的变量,默认为FALSE的 private bool BHaveBeenTip=false; private void label5_Click(object sender, Ev ...

  9. Python 基础之在ubuntu系统下安装双版本python

    前言:随着python升级更新,新版本较于老版本功能点也有不同地方,作为一个初学者应该了解旧版本的规则,也要继续学习新版本的知识.为了能更好去学习python,我在ubuntu安装python2和py ...

  10. Winscp sftp远程linux服务器需要预设密码,怎么解决

    需要在root账户下修改/etc/ssh/sshd_config 文件中PermitEmptyPasswords no改成yes