0

我正在尝试创建一个 Excel 表,然后使用 C# Word 加载项将其插入到 Word 文档中。我创建了一个全新的 Word 2010 加载项并引用了Microsoft.Office.Interop.Excel. 作为一个快速测试,我尝试创建一个新Excel.Worksheet的并用一些值填充它。然后我使用以下方法将它插入到word文档中InsertDatabase

private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
      Excel.Worksheet testWrkSht = new Excel.Worksheet();
      for(int i = 1; i < 5; i++)
      {
           testWrkSht.Range["A" + i.ToString()].Value = i ^ (i + 1);
      }
      Word.Document curDoc = this.Application.ActiveDocument;
      curDoc.Paragraphs[1].Range.InsertDatabase(testWrkSht);

}

我的问题是,当我尝试执行此操作时,出现以下错误:

MyCustomAddIn.dll 中出现“System.InvalidCastException”类型的异常,但未在用户代码中处理

附加信息:无法将“Microsoft.Office.Interop.Excel.WorksheetClass”类型的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel._Worksheet”。此操作失败,因为 IID 为“{000208D8-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:接口未知。(来自 HRESULT 的异常:0x800706B5)。

如何创建 Excel 电子表格,并将其插入 Word Doc?

4

1 回答 1

0

由于您正在创建Word加载项,因此您需要打开另一个 Excel 实例,然后创建 Excel 工作表。这是一个简单的例子:

    Excel.Application xlApp = new Excel.Application();

    if (xlApp == null)
    {
        Console.WriteLine("Excel could not be started.  Check that your office installation and project references are correct.");
        return;
    }
    xlApp.Visible = true;

    Excel.Workbook wb = xlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
    Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];

    if (ws == null)
    {
        Console.WriteLine("Worksheet could not be created.  Check that you office installation and project references are correct.");
    }

    for(int i = 1; i < 5; i++)
    {
        ws.Range["A" + i.ToString()].Value = i * (i + 1);
    }

    wb.SaveAs(Filename: "C:\\temp\\test.xlsx");

这还假设您已经添加了适当的 using 语句:using Excel = Microsoft.Office.Interop.Excel;并添加了对 Excel 互操作的引用。

于 2013-09-16T17:26:59.240 回答