如何使用vs 2010,c#以编程方式在Word 2007文档中插入或编辑饼图?

如何使用vs 2010,c#以编程方式在Word 2007文档中插入或编辑饼图?,c#,visual-studio-2010,ms-word,automation,C#,Visual Studio 2010,Ms Word,Automation,我需要使用VS2010,c#在Word 2007文档中以编程方式插入或编辑饼图。。。我所发现的一切都说明了如何将这些丑陋的旧图表放到word文档中。因此,我现在想知道,是否有可能操纵更新和更好看的图表 这张图展示了如何做我想做的事情,只是它是旧的丑陋的图表。它告诉你插入一个OLE对象,这是古老的msgraph.chart.8之类的东西 我已经能够做我需要做的一切,除了使用新样式的图表 下面是一些代码。我构建了一个新的饼图,现在如何将其插入Word文档?我的PieChart3D类就是基于这些 在我

我需要使用VS2010,c#在Word 2007文档中以编程方式插入或编辑饼图。。。我所发现的一切都说明了如何将这些丑陋的旧图表放到word文档中。因此,我现在想知道,是否有可能操纵更新和更好看的图表

这张图展示了如何做我想做的事情,只是它是旧的丑陋的图表。它告诉你插入一个OLE对象,这是古老的msgraph.chart.8之类的东西

我已经能够做我需要做的一切,除了使用新样式的图表

下面是一些代码。我构建了一个新的饼图,现在如何将其插入Word文档?我的PieChart3D类就是基于这些


在我看来,我只需要最后一步将其注入文档。我遗漏了什么?

您可能应该在“addolControl()”调用中添加遗漏的参数,以便更好地度量


这些选项都不适用于您。AddChart用于创建Word已经知道的图表-您必须使用已知的图表类型之一。AddOlControl和AddOLEObject都要求为COM注册图表类。调用该方法时,它将创建类的新实例并将其添加到表单中。不能使用这些方法添加在C#中创建的现有图表

我认为最好的办法是使用该方法将图表保存到文件中,然后使用该方法将其添加到WORD文档中。您将无法在Word中修改图表,您必须将其删除并重新添加,但至少可以显示您创建的图表。

我找到了一个示例代码


在这段代码中,首先创建一个单词cocument。可以在word文档中设置其样式。然后,只需一个过程调用即可更新图表。希望有帮助。

您是否愿意使用OpenXML来处理Word文档,或者解决方案必须是Word自动化/Interop(如您在示例中所示)?这实际上仍然使用内置的图表来处理Word文档,类似于document.AddChart方法。我认为不可能使用此方法添加自定义图表类型,如OP使用的PieChart3d类型。是的,创建和编辑Office 2007+文档时需要阅读OpenXML。我建议从Microsoft下载OpenXML SDK:。以下是创建和使用文档的更多示例代码:
// here's my c#.net

private void CreateChart(string title, Microsoft.Office.Interop.Word.Application oWord, Microsoft.Office.Interop.Word.Document oDoc, ChartType chartType, Hashtable values)
{
  PieChart3D chart1 = new PieChart3D();  // using System.Windows.Forms.DataVisualization.Charting
  chart1.PieChart3D_Load(values);

  object oMissing = System.Reflection.Missing.Value;
  object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */
  Microsoft.Office.Interop.Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;

  // None of these work!!!!
  wrdRng.InlineShapes.AddOLEControl(chart1);
  wrdRng.InlineShapes.AddChart(chart1);
  wrdRng.InlineShapes.AddOLEObject(chart1);

  return;
}

// done with code