在隐藏的 Word2010 中创建图表时,Excel 将打开.如何禁用此功能

本文关键字:将打开 Excel 何禁用 功能 隐藏 Word2010 创建 | 更新日期: 2023-09-27 18:32:23

简而言之:

这一行:

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

打开 Excel。如何禁用此功能?


更多详情:

我正在尝试从模板创建 docx 文档,并在 c# 中编写 Word2010。我以这种方式打开文档:

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

脚本期间,当我在word文档("Excel.Chart.8")中创建图表时,Word2010不会出现,但Excel2010会显示

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

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

编辑:创建 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 都会出现在一个漫长的脚本过程中。在短的图表上,它不会出现,但我需要执行长时间的脚本过程(创建、填充和格式化 16 个图表/docx)

在隐藏的 Word2010 中创建图表时,Excel 将打开.如何禁用此功能

我可以在我的机器上重新创建它,尽管我使用的是 Office 2007 而不是 2010。到目前为止,我设法找到的唯一半解决方案是获取Excel的活动实例并将其切换为不可见。Excel 将闪烁一秒钟,然后消失,但至少在您执行脚本/图表时它不会保持可见。

因此,将其插入到您的代码中:

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...