【问题标题】:How do I create an Excel table using a Word Add-In?如何使用 Word 加载项创建 Excel 表格?
【发布时间】:2013-09-09 16:52:01
【问题描述】:

我正在尝试创建一个 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'。此操作失败 因为接口的 COM 组件上的 QueryInterface 调用 使用 IID '{000208D8-0000-0000-C000-000000000046}' 失败,因为 以下错误:接口未知。 (HRESULT 的例外情况: 0x800706B5)。

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

【问题讨论】:

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


    【解决方案1】:

    由于您要创建 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 互操作的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2017-02-27
      相关资源
      最近更新 更多