C# 需要关于获取读取XML的简单方法的帮助吗

C# 需要关于获取读取XML的简单方法的帮助吗,c#,xml,visual-studio-2010,C#,Xml,Visual Studio 2010,需要关于获取读取XML的简单方法的帮助。 以下是我采取的步骤: 添加了来自Microsoft Excel 12.0对象库COM的引用 完全从另一个源复制代码 唯一不同的是,我会要求这是一个方法,而不是 一次点击事件 我得到的错误是错误10:代码releaseObject(xlWorkSheet)上的非静态字段、方法或属性需要对象引用; releaseObject(xlWorkBook); 释放对象(xlApp) 需要采取哪些步骤 using System; using System.Colle

需要关于获取读取XML的简单方法的帮助。 以下是我采取的步骤:

  • 添加了来自Microsoft Excel 12.0对象库COM的引用
  • 完全从另一个源复制代码
  • 唯一不同的是,我会要求这是一个方法,而不是 一次点击事件
  • 我得到的错误是错误10:代码
    releaseObject(xlWorkSheet)上的非静态字段、方法或属性需要对象引用;
    releaseObject(xlWorkBook);
    释放对象(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();
            }
        } 
    
    }
    
    使用系统;
    使用System.Collections.Generic;
    使用System.Linq;
    使用系统文本;
    使用System.Windows.Forms;
    使用Excel=Microsoft.Office.Interop.Excel;
    命名空间项目名称
    {
    类frmReadXml
    {
    公共静态void executeRead()
    {
    Excel.Application xlApp=新的Excel.Application();
    Excel.工作簿;
    Excel.Worksheet xlWorkSheet=新建Excel.Worksheet();
    范围;
    字符串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_项(1);
    range=xlWorkSheet.UsedRange;
    对于(rCnt=1;rCnt,因为您的功能:

    public static void executeRead()
    

    声明为
    static
    ,它只能访问定义为
    static
    的其他函数。请删除此函数上的
    static
    ,或将其添加到其他函数中。由于这些函数似乎都无法访问
    frmReadExcel
    的任何类成员,因此我建议您将它们全部设置为静态。

    make
    releaseObject
    作为
    静态
    方法

    private static void releaseObject(object obj)
    

    谢谢..我将只删除static,因为我不知道它以指数形式做什么。也许这篇文章将帮助您理解
    static
    的意思:啊,原来我需要使用static才能从另一个窗体访问它。那么,我只会将static添加到其他方法中。也许,是的…但要意识到这个静态类将在整个应用程序中只有一个且只有一个版本。也就是说,如果您需要在应用程序中多次使用此类,您可能会发现这些值会在您不希望的情况下发生更改。可以将“静态”视为“在应用程序的整个生命周期中保留一个副本”。那么,如果函数中的值发生更改,这将是一个巨大的问题。那么,我应该如何处理?使用继承?不太了解SRP,但被指示以这种方式执行。感谢您的帮助。非常感谢