无法投射“Microsoft.Office.Interop.Excel.WorksheetClass”types的COM对象

我试图用一堆聚合数据在C#中创build和保存一个新的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”types的COM对象转换为“Microsoft.Office.Interop.Excel._Worksheet”types的接口。 此操作失败,因为具有IID“{000208D8-0000-0000-C000-000000000046}”的接口的COM组件上的QueryInterface调用由于以下错误而失败:没有此类接口支持(exception来自HRESULT:0x80004002(E_NOINTERFACE)) 。

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

就像Hans已经说过的,你需要先创build一个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互操作对象