2010-10-20 83 views
8

我需要以編程方式在Word 2007文檔中插入或編輯餅圖,使用vs 2010,c#...我找到的所有東西都顯示如何將這些舊的醜陋圖表放入word文檔中。所以我現在想知道是否甚至有可能操縱更新,更好看的圖表。如何以編程方式在Word 2007文檔中使用vs 2010,c#插入或編輯餅圖?

這一個顯示如何做正是我想要的,只有它是舊的醜陋的圖表...... 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 

在我看來,我只需要它注入文檔的最後一步。我錯過了什麼?

+0

您是否願意使用OpenXML來操作您的Word文檔,或者您的解決方案是Word Automation/Interop(如您在示例中所示)? – MikeTeeVee 2012-06-21 20:23:53

回答

1

這些選項都不會真正爲你工作。 AddChart用於創建Word已經知道的圖表 - 您必須使用其中一種已知的圖表類型。 AddOLEControl和AddOLEObject都需要Chart類來註冊COM。當您調用該方法時,它將創建該類的新實例並將其添加到表單中。您不能使用這些方法來添加您在C#中創建的現有圖表。

我認爲您最好的選擇是使用SaveImage方法將圖表保存到文件中,然後使用AddPicture方法將其添加到WORD文檔中。您將無法在Word中修改圖表,您必須將其刪除並重新添加,但至少您可以顯示您創建的圖表。

1

我找到了一個示例代碼。

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

在此代碼首先創建一個字cocument。您可以在單詞文檔中設置其樣式。然後你可以用一個過程調用來更新圖表。希望能幫助到你。

+0

這實際上仍然使用Word的內置圖表,類似於document.AddChart方法。我不認爲有可能使用這種方法添加自定義圖表類型,如OP所使用的PieChart3d類型。 – 2012-06-22 15:17:03

+1

是的,您需要閱讀OpenXML以創建和編輯Office 2007+文檔。我建議從Microsoft下載OpenXML SDK:http://www.microsoft.com/en-us/download/details.aspx?id=5124。以下是一些用於創建和使用文檔的示例代碼:http://www.codeproject.com/Articles/36694/Creation-of-a-Word-2007-document-using-the-Open-XM – 2012-06-26 10:42:26

相關問題