如何使用Word加载项创建Excel表?

时间:2013-09-09 16:52:01

标签: c#-4.0 vsto excel-2010 add-in word-2010

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

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);

}

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

  

发生了'System.InvalidCastException'类型的异常   MyCustomAddIn.dll但未在用户代码中处理

     

附加信息:无法转换类型的COM对象   'Microsoft.Office.Interop.Excel.WorksheetClass'到接口类型   'Microsoft.Office.Interop.Excel._Worksheet'。此操作失败   因为QueryInterface调用COM组件的接口   由于IID'{000208D8-0000-0000-C000-000000000046}'失败了   以下错误:界面未知。 (HRESULT的例外情况:   0x800706B5)。

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

1 个答案:

答案 0 :(得分: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 Interop的引用。