• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

用c#生成excel文件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
我在工作中遇到了一些生成Excel的问题。
在网络上查找了很多方法,各有优劣。
最后选择了使用OFFICE 的Excel 自动化服务来生成Excel文件的办法,也就是使用Excel提供的Com对象。
具体的代码如下:
public static void CreateExcel()
  {
   for(int i = 0 ; i<1 ; i++)
   {
    string staFile = "D:\\test\\x";
    System.Reflection.Missing miss = System.Reflection.Missing.Value;
    Excel.ApplicationClass m_objExcel = new Excel.ApplicationClass();
    m_objExcel.Visible = false;
    Excel.Workbooks m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks;
    Excel.Workbook m_objBook = (Excel.Workbook)(m_objBooks.Add(miss));
    Excel.Worksheet m_objSheet = (Excel.Worksheet)m_objBook.ActiveSheet;
    
    //向Excel文件中写入数据
    Excel.Range er = m_objSheet.get_Range((object)"A1",System.Reflection.Missing.Value);
    er.Value2 = "dfadfa";
    m_objBook.SaveAs(staFile+i.ToString()+".xls", miss, miss, miss, miss,miss, Excel.XlSaveAsAccessMode.xlNoChange, miss,miss,miss, miss, miss);
    
    m_objBook.Close(false, miss, miss);
    m_objBooks.Close();
    m_objExcel.Quit();
    System.Runtime.InteropServices.Marshal.ReleaseComObject(er);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objSheet);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBook);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objBooks);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcel);
    GC.Collect();
   }
  }
在网上也看到过类似的办法,但是他们都存在着一个使用完Excel后无法释放的问题;在我经过研究后发现在使用Com对象的时候一定要把每一个建立的实例对象都释放掉,也就是代码中红色的部分。
注:使用本代码要自己在工程中引用Excel组件。另:我只在OFFICE 2003下做了测试,确定对象可以释放。在其它系统下没有做相应测试,请大家自行研究。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#开发PACS医学影像处理系统(四):界面布局之状态栏发布时间:2022-07-10
下一篇:
C#利用log4net把日志写入到数据库表中发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap