繁体   English   中英

无法转换“Microsoft.Office.Interop.Excel.WorksheetClass”类型的COM对象

[英]Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.WorksheetClass'

我正在尝试从一堆聚合数据中创建并在C#中保存新的Excel文档。 现在,我只是试图让基础知识工作到编辑表格单元格等等。这是我只是尝试设置一个单元格的内容:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.Office.Interop.Excel;

namespace DebugReport
{
    class MonumentDebugReport
    {
        static void Main(string[] args)
        {    
            Worksheet spreadsheet = new Worksheet();

            spreadsheet.Cells[0, 0] = "stuff";
       }
    }
}

返回:

无法将“Microsoft.Office.Interop.Excel.WorksheetClass”类型的COM对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Worksheet”。 此操作失败,因为由于以下错误,对IID为“{000208D8-0000-0000-C000-000000000046}”的接口的COM组件的QueryInterface调用失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) 。

在我设置单元格的行上。 对我来说,这看起来与我见过的大多数示例/教程完全一样,而且我在C#文档中找不到任何表明这不起作用的内容。

就像汉斯已经说过你需要首先创建一个Excel应用程序,然后你添加一个工作簿,然后你添加一个工作表( 或尝试访问已经存在的Sheets[1]

using Microsoft.Office.Interop.Excel和别名

using Excel = Microsoft.Office.Interop.Excel

然后

Excel.Application xlApp = new Excel.Application();
xlApp.Visible = true;
Excel.Workbook xlWb = xlApp.Workbooks.Add() as Excel.Workbook;
Excel.Worksheet xlSheet = xlWb.Sheets[1] as Excel.Worksheet;
Excel.Range range = xlSheet.get_Range("A1");

range.Value = "hello world!";

然后看看如何正确清理Excel互操作对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM