【问题标题】:How do I programmatically insert, or edit, a pie chart in a Word 2007 document, using vs 2010, c#?如何使用 vs 2010、c# 以编程方式在 Word 2007 文档中插入或编辑饼图?
【发布时间】:2011-04-28 04:51:54
【问题描述】:

我需要使用 vs 2010、c# 以编程方式在 Word 2007 文档中插入或编辑饼图……我发现的所有内容都显示了如何将这些旧的丑陋图表放入 Word 文档中。所以我现在想知道是否有可能操纵更新和更好看的图表。

这个展示了如何做我想要的,只是它是旧的丑陋图表......http://msdn.microsoft.com/en-us/library/ms178766.aspx。它告诉你插入一个 OLE 对象,它是古老的 msgraph.chart.8 东西。

除了使用更新的图表样式之外,我已经能够做所有我需要做的事情。

这是一些代码。我建立了一个新的饼图,现在如何将它插入 Word 文档?我的 PieChart3D 类是基于这些http://code.msdn.microsoft.com/mschart

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

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

【问题讨论】:

  • 您是否愿意使用 OpenXML 来操作您的 Word 文档,或者解决方案必须是 Word 自动化/互操作(就像您在示例中显示的那样)?

标签: c# visual-studio-2010 ms-word automation


【解决方案1】:

您可能应该在您的“AddOLEControl()”调用中添加缺少的参数,只是为了更好地衡量。

How to insert an excel chart into Word using AddOLEObject

http://support.microsoft.com/kb/316384

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      我找到了一个示例代码。

      http://www.codeproject.com/Articles/188909/Updating-Charts-in-Word-Document-using-OpenXML

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

      【讨论】:

      • 这个其实还是使用Word自带的图表,类似document.AddChart方法。我认为不可能使用此方法添加自定义图表类型,例如 OP 正在使用的 PieChart3d 类型。
      • 是的,OpenXML 是您在创建和编辑 Office 2007+ 文档时需要阅读的内容。我建议从 Microsoft 下载 OpenXML SDK:microsoft.com/en-us/download/details.aspx?id=5124。下面是更多用于创建和处理文档的示例代码:codeproject.com/Articles/36694/…
      猜你喜欢
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      相关资源
      最近更新 更多