2013-07-05 22 views
0

获取简单的readxml方法需要帮助。 这里是我所采取的步骤:获取简单的readxml方法需要帮助

  1. 添加引用从Microsoft Excel 12.0对象库COM。
  2. 复制代码完全从另一源 http://csharp.net-informations.com/excel/csharp-read-excel.htm
  3. 我会要求这是一个方法的唯一区别和Not onClick事件。
  4. 我得到的错误是错误10引用需要非静态字段,方法或属性的代码releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp);

有什么需要的步骤的对象?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using Excel = Microsoft.Office.Interop.Excel; 

namespace projectName 
{ 
class frmReadXml 
{ 

    public static void executeRead() 
    { 

     Excel.Application xlApp = new Excel.Application(); 
     Excel.Workbook xlWorkBook; 
     Excel.Worksheet xlWorkSheet = new Excel.Worksheet(); 
     Excel.Range range; 

     string str; 
     int rCnt = 0; 
     int cCnt = 0; 



     xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0); 
     xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); 

     range = xlWorkSheet.UsedRange; 

     for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++) 
     { 
      for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++) 
      { 
       str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2; 
       MessageBox.Show(str); 
      } 
     } 

     xlWorkBook.Close(true, null, null); 
     xlApp.Quit(); 

     releaseObject(xlWorkSheet); 
     releaseObject(xlWorkBook); 
     releaseObject(xlApp); 
    } 
    private void releaseObject(object obj) 
    { 
     try 
     { 
      System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); 
      obj = null; 
     } 
     catch (Exception ex) 
     { 
      obj = null; 
      MessageBox.Show("Unable to release the Object " + ex.ToString()); 
     } 
     finally 
     { 
      GC.Collect(); 
     } 
    } 

} 

}

回答

0

使releaseObjectstatic方法

private static void releaseObject(object obj) 
+0

感谢您的帮助。非常感激 – user2552331

0

因为你的函数:

public static void executeRead() 

被声明为static,它只有权访问也被定义为static等功能。删除此功能上的static,或将其添加到其他功能。由于所有这些似乎都无法访问frmReadExcel的任何班级成员,所以我建议您将它们全部设为静态。

+0

谢谢..我只是消除静电,因为我不知道它是什么呢成倍。 – user2552331

+0

也许这篇文章将帮助你理解什么'静态'的意思:http://stackoverflow.com/questions/4124102/whats-a-static-method-in-c –

+0

啊原来,我会需要使用静态为此从另一个表单访问。然后,我将静态添加到其他方法。 – user2552331