我正在尝试创建一个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 组件的接口 IID"{000208D8-0000-0000-C000-000000000046}"由于 以下错误:接口未知。(HRESULT的例外情况: 0x800706B5)。
如何创建 Excel 电子表格表并将其插入到 Word 文档中?
由于您正在创建 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 互操作的引用。