簡體   English   中英

如何在 C# 中遍歷 Excel 工作表?

[英]How to iterate through Excel worksheets in C#?

我有一個包含多張工作表的工作簿,我試圖遍歷它們,但這給我帶來了問題。 下面的代碼拋出錯誤:

Microsoft.Office.Tools.Excel.Worksheet'。 此操作失敗,因為 IID 為“{297DC8D9-EABD-45A1-BDEF-68AB67E5C3C3}”的接口的 COM 組件上的 QueryInterface 調用因以下錯誤而失敗:不支持此類接口(來自 HRESULT 的異常:0x80004002 (E_NOINTERFACE)) .

但我真的不明白這甚至意味着什么。

嘗試將工作表變量分配為我的工作表變量中的第一張工作表時發生錯誤,該工作表變量只是一個工作簿

public List<Worksheet> GetAllDatasheets()
    {
        var datasheets = new List<Worksheet>();
        var sheets = _book;
        foreach (Worksheet sheet in sheets.Worksheets)
        {
            if (sheet.Name.StartsWith("$"))
                datasheets.Add(sheet);
        }
        return datasheets;
    }

編輯:這是我的完整代碼:

using Workbook = Microsoft.Office.Tools.Excel.Workbook;
using Worksheet = Microsoft.Office.Tools.Excel.Worksheet;

private Workbook _book;

    public ExcelObjectDAL()
    {
        _book = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveWorkbook);
    }

public List<Worksheet> GetAllDatasheets()
    {
        var datasheets = new List<Worksheet>();
        var sheets = _book;
        foreach (var sheet in sheets.Worksheets)
        {
            var actualSheet = (Worksheet) sheet;
            if (actualSheet.Name.StartsWith("$"))
                datasheets.Add(actualSheet);
        }
        return datasheets;
    }

我認為這就是你要找的:

 public List<string> GetAllDatasheets()
        {
            Excel.Application excelApp = new Excel.Application();
            Excel.Workbook workBook = excelApp.Workbooks.Open(filePath);

            var datasheets = new List<string>();
            foreach (Excel.Worksheet sheet in workBook.Worksheets)
            {
                if (sheet.Name.StartsWith("$"))
                    datasheets.Add(sheet.Name);
            }

            excelApp.Quit();
            return datasheets;
        }

如果您有足夠了解的工作表名稱,則不必使用類型 Worksheet 制作列表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM