国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

Excel在.Net下駐留內(nèi)存的解決方法

2024-07-10 13:08:47
字體:
來源:轉載
供稿:網(wǎng)友


  這段時間在vs 2003 的webform 方式下對excel 進行操作,遇到一個最為頭疼的問題就是對excel操作完畢后excel不能夠正常關閉,系統(tǒng)退出后,excel總是駐留在內(nèi)存中。但是這段代碼放到winform的程序中又沒有問題。在網(wǎng)上進行了查找也沒有找到有效可行的辦法。經(jīng)過無數(shù)次的嘗試,終于解決如下:

  原來書寫如下:

  private excel.application m_app;
  private excel.workbook m_workbook;
  this.m_app = new excel.applicationclass();
  this.m_app.displayalerts = false;
  this.m_workbook = this.m_app.workbooks.open(sfilepath, missing.value,
  missing.value, missing.value, missing.value,
  missing.value, missing.value, missing.value,
  missing.value, missing.value, missing.value,
  missing.value, missing.value, missing.value,
  missing.value );

  修改后如下:

  private excel.application m_app;
  private excel.workbooks m_workbooks;
  private excel.workbook m_workbook;
  this.m_app = new excel.applicationclass();
  this.m_app.displayalerts = false;
  m_workbooks = this.m_app.workbooks;
  this.m_workbook = this.m_workbooks.open(sfilepath, missing.value,
  missing.value, missing.value, missing.value,
  missing.value, missing.value, missing.value,
  missing.value, missing.value, missing.value,
  missing.value, missing.value, missing.value,
  missing.value );

  同樣對sheet的操作如下

  修改前如下:

  excel._worksheet worksheet1 = null;
  worksheet1 = (excel._worksheet) this.m_workbook.worksheets.get_item(ssheetname);
  修改后如下:
  excel.sheets sheets = null ;
  excel._worksheet worksheet1 = null;
  sheets = this.m_workbook.worksheets;
  worksheet1 = (excel._worksheet) sheets.get_item(ssheetname);

  發(fā)現(xiàn)區(qū)別了么?原來workbooks,worksheets這兩個類沒有被實例化就直接使用了,造成該類不能夠被回收。最終造成excel在內(nèi)存的駐留。

  最終以如下方式釋放。

  private void releaseallref(object obj)
  {
  try
  {
  if (obj != null )
  {
  while (marshal.releasecomobject(obj) > 1);
  }
  }
  finally
  {
  obj = null;
  }
  }
  private void release()
  {
  if (m_app != null )
  {
  m_app.quit() ;
  }
  releaseallref(m_workbook) ;
  m_workbook = null ;
  releaseallref(m_workbooks) ;
  m_workbooks = null ;
  releaseallref(m_app) ;
  m_app = null ;
  system.gc.collect() ;
  }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 明水县| 广宁县| 临颍县| 彩票| 广宗县| 桃园县| 手游| 遵义县| 上高县| 兴隆县| 高陵县| 宜春市| 平邑县| 临澧县| 丘北县| 拉萨市| 弥渡县| 安泽县| 新疆| 田林县| 新泰市| 枝江市| 枣庄市| 大田县| 维西| 淄博市| 泾源县| 方正县| 沅江市| 南乐县| 纳雍县| 布尔津县| 肇州县| 花莲县| 房产| 吉隆县| 沁源县| 永川市| 特克斯县| 抚松县| 衡水市|