ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:20.79KB ,
资源ID:23571332      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23571332.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#导出Excel后关闭进程EXCELEXE释放资源的解决方案.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#导出Excel后关闭进程EXCELEXE释放资源的解决方案.docx

1、C#导出Excel后关闭进程EXCELEXE释放资源的解决方案C#导出Excel后关闭进程(EXCEL.EXE)释放资源的解决方案2009年2月3日 9,330 views 发表评论 阅读评论 一年前,从网上找到一些C#导出MS Excel的例子,但是都不能彻底销毁其所创建的Excel进程,典型的就是进程中的EXCEL.EXE不能关掉。网上的解决方案大部分是kill掉所有的Excel进程,偶一直感觉不爽。最近,做了几个月的WinForm,接触了一些进程、句柄方面的知识。于是试着解决一下,没想到成功了,创建的Excel进程被成功Kill掉了,而其它Excel进程则相安无事。关键代码:public

2、 void KillSpecialExcel()tryif (m_objExcel != null)int lpdwProcessId;GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId);System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();catch (Exception ex)Console.WriteLine(Delete Excel Process Error: + ex.Message);操作生成Excel的全部代码:

3、using System;using System.Collections.Generic;using System.Text;using System.Reflection;using System.Runtime.InteropServices;using System.Drawing;namespace VeryCodes.Common.MyExcel/ ExcelClass 的摘要说明。/public class MSExcel/ 构建ExcelClass类/public MSExcel()/别忘了需要添加Excel Library的引用this.m_objExcel = new Mi

4、crosoft.Office.Interop.Excel.Application();/ 构建ExcelClass类/Excel.Applicationpublic MSExcel(Microsoft.Office.Interop.Excel.Application objExcel)this.m_objExcel = objExcel;/ 列标号,Excel最大列数是256/private string ALists = new string A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y,

5、Z,AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ,BA, BB, BC, BD, BE, BF, BG, BH, BI, BJ, BK, BL, BM, BN, BO, BP, BQ, BR, BS, BT, BU, BV, BW, BX, BY, BZ,CA, CB, CC, CD, CE, CF, CG, CH, CI, CJ, CK, CL, CM, CN, CO, CP, CQ, CR, CS, CT, CU, CV, CW,

6、CX, CY, CZ,DA, DB, DC, DD, DE, DF, DG, DH, DI, DJ, DK, DL, DM, DN, DO, DP, DQ, DR, DS, DT, DU, DV, DW, DX, DY, DZ,EA, EB, EC, ED, EE, EF, EG, EH, EI, EJ, EK, EL, EM, EN, EO, EP, EQ, ER, ES, ET, EU, EV, EW, EX, EY, EZ,FA, FB, FC, FD, FE, FF, FG, FH, FI, FJ, FK, FL, FM, FN, FO, FP, FQ, FR, FS, FT, FU,

7、 FV, FW, FX, FY, FZ,GA, GB, GC, GD, GE, GF, GG, GH, GI, GJ, GK, GL, GM, GN, GO, GP, GQ, GR, GS, GT, GU, GV, GW, GX, GY, GZ,HA, HB, HC, HD, HE, HF, HG, HH, HI, HJ, HK, HL, HM, HN, HO, HP, HQ, HR, HS, HT, HU, HV, HW, HX, HY, HZ,IA, IB, IC, ID, IE, IF, IG, IH, II, IJ, IK, IL, IM, IN, IO, IP, IQ, IR, IS

8、, IT, IU, IV;/ 获取描述区域的字符/public string GetAix(int x, int y)if (x 256) return ; string s = ;s = s + AListsx - 1.ToString();s = s + y.ToString();return s;/ 给单元格赋值1/行号/列号/对齐(CENTER、LEFT、RIGHT)/值public void setValue(int y, int x, string align, string text)Microsoft.Office.Interop.Excel.Range range = she

9、et.get_Range(this.GetAix(x, y), miss);range.set_Value(miss, text);if (align.ToUpper() = CENTER)range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;if (align.ToUpper() = LEFT)range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;if (align.ToUp

10、per() = RIGHT)range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;/ 给单元格赋值2/行号/列号/值public void setValue(int y, int x, string text)Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);range.set_Value(miss, text);/ 给单元格赋值3/行号/列号/值/字符格式/颜色p

11、ublic void setValue(int y, int x, string text, System.Drawing.Font font, int color)this.setValue(x, y, text);Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);range.Font.Size = font.Size;range.Font.Bold = font.Bold;/这里是int型的颜色range.Font.Color = ColorTranslator.ToO

12、le(ColorTranslator.FromWin32(color);range.Font.Name = font.Name;range.Font.Italic = font.Italic;range.Font.Underline = font.Underline;/ 给单元格赋值3/行号/列号/值/字符格式/颜色public void setValue(int y, int x, string text, System.Drawing.Font font, int color, string align)this.setValue(x, y, text);Microsoft.Office.

13、Interop.Excel.Range range = sheet.get_Range(this.GetAix(x, y), miss);range.Font.Size = font.Size;range.Font.Bold = font.Bold;/这里是int型的颜色range.Font.Color = ColorTranslator.ToOle(ColorTranslator.FromWin32(color);range.Font.Name = font.Name;range.Font.Italic = font.Italic;range.Font.Underline = font.Un

14、derline;if (align.ToUpper() = CENTER)range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;if (align.ToUpper() = LEFT)range.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;if (align.ToUpper() = RIGHT)range.HorizontalAlignment = Microsoft.Office

15、.Interop.Excel.XlHAlign.xlHAlignRight;/ 插入新行/模板行号public void insertRow(int y)Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(GetAix(1, y), GetAix(255, y);range.Copy(miss);range.Insert(Microsoft.Office.Interop.Excel.XlDirection.xlDown, miss);range.get_Range(GetAix(1, y), GetAix(255, y);r

16、ange.Select();sheet.Paste(miss, miss);/ 把剪切内容粘贴到当前区域/public void paste()string s = a,b,c,d,e,f,g;sheet.Paste(sheet.get_Range(this.GetAix(10, 10), miss), s);/ 设置边框/public void setBorder(int x1, int y1, int x2, int y2, int Width)Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(

17、x1, y1), this.GetAix(x2, y2);range.Borders.Weight = Width;public void mergeCell(int x1, int y1, int x2, int y2)Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2);range.Merge(true);public Microsoft.Office.Interop.Excel.Range getRange(int x1, int y1,

18、int x2, int y2)Microsoft.Office.Interop.Excel.Range range = sheet.get_Range(this.GetAix(x1, y1), this.GetAix(x2, y2);return range;private object miss = Missing.Value; /忽略的参数OLENULLprivate Microsoft.Office.Interop.Excel.Application m_objExcel;/Excel应用程序实例private Microsoft.Office.Interop.Excel.Workbooks m_objBooks;/工作表集合private Microsoft.Office.Interop.Excel.Workbook m_objBook;/当前操作的工作表private Microsoft.Office.Interop.Excel.Worksheet sheet;/当前操作的表格 public Microsoft.Office.Interop.Excel.Worksheet CurrentSheetgetreturn sheet;se

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1