我正在尝试创建一个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?
答案 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的引用。