在隐藏的Word2010中创build图表时,Excel将打开。 如何禁用这个?

总之问题是:

这一行:

doc.InlineShapes.AddOLEObject("Excel.Chart.8"); // doc is a Microsoft.Office.Interop.Word.Document object 

打开Excel。 如何禁用这个?


更多细节:

我正在尝试从c#中的脚本Word2010模板创builddocx文档。 我这样打开一个文档:

 Word.Document doc = app.Documents.Open(@"xxxx.docx",Visible:false); 

在脚本过程中,Word2010不会出现,但Excel2010会在Word文档(“Excel.Chart.8”)中创build图表时出现

我在监视器上看到整个图表脚本过程,这不是我想要的。

在这个过程中有没有办法隐藏Excel2010(图表工具)?

编辑:创build一个Excel图表的一个例子:

 Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); Word.Document doc = app.Documents.Open(@"xxxx.docx",Visible:false); string classtype = "Excel.Chart.8"; Bookmark shapeBookMark = doc.Bookmarks.get_Item("mybookmark"); Word.InlineShape wrdInlineShape = doc.InlineShapes.AddOLEObject(classtype, Range: shapeBookMark.Range); if (wrdInlineShape.OLEFormat.ProgID == classtype) { object verb = Word.WdOLEVerb.wdOLEVerbHide; wrdInlineShape.OLEFormat.DoVerb(ref verb); Excel.Workbook obook = (Excel.Workbook)wrdInlineShape.OLEFormat.Object; Excel.Worksheet sheet = (Excel.Worksheet)obook.Worksheets["Sheet1"]; //then the access of a cell goes like this: ((Microsoft.Office.Interop.Excel.Range)sheet.Cells[1, 1]).Value = "data"; } 

请注意,必须使用Visible:false参数,否则excel和word都会出现在长时间的脚本编写过程中 。 简而言之,它不会出现,但我需要做很长的脚本过程(创build,填充和格式化16个图表/ docx)

我可以在我的机器上重新创build,尽pipe我使用的是Office 2007,而不是2010.到目前为止,我find的唯一一个半解决scheme是获取Excel的活动实例并将其切换为不可见状态。 Excel会闪烁一会然后消失,但至less在执行脚本/图表时它不会保持可见。

所以把它插入你的代码中:

 Word.InlineShape wrdInlineShape = doc.InlineShapes.AddOLEObject(classtype, Range: shapeBookMark.Range); Excel.Application xlApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); xlApp.Visible = false; if (wrdInlineShape.OLEFormat.ProgID == classtype) { // etc...