c# - 无法将类型 'object' 隐式转换为 'Microsoft.Office.Interop.Excel.Worksheet'

标签 c#

我有以下类(class)。我从另一个程序转移来创建一个 ClassLibary。

我在拥有 wb.Worksheet 的任何地方都收到下面的错误消息

无法将类型“object”隐式转换为“Microsoft.Office.Interop.Excel.Worksheet”。存在显式转换(您是否缺少强制转换?)

该类在原始程序中运行。我添加了引用 Inereop.Microsoft.Office.Interop.Excel

using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Office.Interop.Excel;
using _Excel = Microsoft.Office.Interop.Excel;

 public class Excel
    {
        string path = "";
        _Application excel = new _Excel.Application();
        Workbook wb;
        Worksheet ws;

        public Excel()
        {

        }

        public Excel(string path, int sheet)
        {
            this.path = path;
            wb = excel.Workbooks.Open(path);
            ws = wb.Worksheets[sheet];
        }

        public void Open(string path, int sheet)
        {
            this.path = path;
            wb = excel.Workbooks.Open(path);
            ws = wb.Worksheets[sheet];
        }

        public void CreateNewFile()
        {
            this.wb = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
            this.ws = wb.Worksheets[1];
        }

    }
}

最佳答案

使用以下样式添加显式类型转换:

ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets[sheet];

通过显式转换,您必须确定目标类型。 In documentation据说 Worksheets-collection 可以包含 Charts 和 Worksheet 对象。

关于c# - 无法将类型 'object' 隐式转换为 'Microsoft.Office.Interop.Excel.Worksheet',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55695702/

相关文章:

c# - 通过html元素上的代码设置样式。有更好的办法吗?

c# - 我应该为此使用线程吗?

c# - _NT_SYMBOL_PATH adplus windbg 问题,无法设置名称

c# - 是否可以将 Windows 语言栏设置为英语或从 c# 应用程序恢复为默认设置

c# - 如何从左到右对齐按钮

C#——使用扩展方法提供默认接口(interface)实现

c# - 区分 Excel Interop 操作引发的异常

c# - "@Scripts.Render"和 "<script>"有什么区别?

c# - 使用 WCF 客户端 + cookie 进行 Web 服务调用

c# - 覆盖扩展方法 C#