无法强制转换类型为';的COM对象;Microsoft.Office.Interop.Excel.Workshee
本文关键字:对象 COM Microsoft Office Workshee Excel Interop 转换 类型 | 更新日期: 2023-09-27 18:30:07
我正试图用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.Eexcel_Worksheet"。此操作失败,因为对IID为"{000208D8-0000-0000-C000-000000000046}"的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT中的异常:0x80004002(E_NOINTERFACE))。
在我设置单元格的行上。对我来说,这看起来和我看到的大多数示例/教程完全一样,而且我在C#文档中找不到任何东西表明这不起作用。
就像Hans已经说过的那样,您需要先创建一个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互操作对象