关于在WinForm下对Excel进行操作的总结
来源:互联网 发布:58和房天下端口那个好 编辑:程序博客网 时间:2024/05/29 13:37
关于在WinForm下对Excel进行操作的总结
【转】http://hi.baidu.com/dearfather/blog/item/8911302426071039c9955929.html
---by weily @ 2005-8-10
魏雷远
一、首先在WinForm下,对Excel操作与Web有些地方不同;
二、创建Excel
在引用中添加
通过:.NET IDE 菜单 项目(P)-à添加引用(R)-à添加引用 COM 中选择 Microsoft Excel 11.0.0 Object Library(根据Office版本不同有相应的COM组件),选择后添加
或者采用其他方式
然后在.cs文件前添加如下项:
using System.Reflection;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
创建Excel对象
private Excel.Application m_objExcel = null;
private Excel.Workbooks m_objBooks = null;
private Excel._Workbook m_objBook = null;
private Excel.Sheets m_objSheets = null;
private Excel._Worksheet m_objSheet = null;
private Excel.Range m_objRange = null;
private Excel.Font m_objFont = null;
private object m_objOpt = System.Reflection.Missing.Value;
m_objExcel = new Excel.Application();
m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
m_objBook = (Excel._Workbook)(m_objBooks.Add(m_objOpt));
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
…………………………………
以下对Excel中的区域进行操作
m_objRange = m_objSheet.get_Range("A1",m_objOpt);
m_objRange = m_objRange.get_Resize(1,iFields);
m_objRange.set_Value(m_objOpt,objHeaders);
m_objFont = m_objRange.Font;
m_objFont.Bold = true;
m_objBook.SaveAs(saveFileDialog.FileName,m_objOpt,m_objOpt,m_objOpt,m_objOpt,m_objOpt,Excel.XlSaveAsAccessMode.xlNoChange,m_objOpt,
m_objOpt,m_objOpt,m_objOpt,m_objOpt);
m_objBook.Close(false,m_objOpt,m_objOpt);
m_objExcel.Quit();
……………………………….
根据以上方法创建Excel文件后,每次调用以上的过程,会产生一个Excel进程,即使上面有m_objExcel.Quit()等方法存在,也没有终止Excel进程。
三、销毁Excel进程
因为创建Excel后,对Excel文件中的任何区域(即任何Cell)操作(Excel中,Cell被看作对象),都会生成一个对象,所以必须进行销毁相应的Excel生成的对象:
m_objExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
m_objSheet = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheets);
m_objSheets = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
m_objBook = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
m_objBooks = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
m_objExcel = null;
GC.Collect(); //强制进行垃圾回收
GC.WaitForPendingFinalizers(); //挂起当前线程,直到以上线程队列清空为止
四、经测试,以上程序到目前为止有效。请大家提供更好的处理方式。Thanks.
- 关于在WinForm下对Excel进行操作的总结
- WinForm下Excel操作
- windows下对目录进行的操作函数总结
- 在WinForm下利用CurrencyManager对数据集对象进行控制的类,大家多提意见
- 对C#操作Excel常用的功能进行整理与总结并封装成类
- ASP.net c#下对Excel文件进行操作需要注意的问题
- 在MFC对EXCEL进行操作所要做的环境配置
- jxl对excel文件的操作总结
- POI对报表excel操作的总结
- java对excel进行操作
- VC环境下对EXCEL的操作
- 在MFC对EXCEL的操作
- 关于Excel操作的问题总结
- python 对excel 的数据进行删除操作
- .net对Excel进行开发的编程总结
- jxl对excel操作总结
- 在不涉及数据库的情况下,对DataGridView中的数据进行删除操作
- 如何在linux系统下对文件夹名有空格的文件夹进行操作
- C# winform 导出导入Excel/Doc 完整实例教程 使用Aspose.Cells.dll——第一篇
- ASP.NET的global.asax文件中的Application事件(二)
- C# winform 导出导入Excel/Doc 完整实例教程 使用Aspose.Cells.dll——第三篇
- Windows 下 SVN 服务器配置
- 将excel文件导入到winform的控件中
- 关于在WinForm下对Excel进行操作的总结
- 实现c#中winform窗体嵌入并操作可视化Excel表格
- SIP中3个很重要的概念,就是dialog, session和transaction
- 80后不为人知的寂莫
- 使用svn开发,目录的约定与开发流程
- NET C#中如何备份SQL数据库
- C#对数据库操作的类,包括附加、还原、备份、分离、压缩、创建、修改等常见操作
- C#生成安装文件后自动附加数据库的思路跟算法
- 蜜罐项目和网站