2013-01-18 28 views
0

我想出一個項目的估計涉及創建基於Microsoft Access數據庫的自動PowerPoint報告。這是我爲客戶做的一個項目的延伸,主要區別在於他希望新報告中包含兩張圖表(基於數據庫中的數據)。包裝gnuplot與Windows的VB.NET應用程序

如果我在* nix上這樣做,我只需將數據傳輸到gnuplot中,保存圖像並將圖像以編程方式放入PowerPoint中。 有什麼方法可以輕鬆地將gnuplot打包到Visual Studio項目中,以便客戶端不必做任何其他類型的安裝?

如果不是,或者那會比它的價值更麻煩,我會很感激任何其他方式的想法。會使用原生PowerPoint圖表是否合理 - 即它們基於編程方式輕鬆訪問的數據?

在此先感謝!

回答

1

有幾種方法可以使用通常作爲MS Office的一部分安裝的內容。您選擇哪種版本將在一定程度上取決於您所寫的Office版本。

鑑於大多數客戶對Excel與PPT等提供的默認圖表不符合要求,您需要插入圖表,然後在程序控制下執行所有格式設置,或者我的可將預先格式化的樣本圖表存儲在單獨的PPT/PPTX文件中。您可以無形地打開它,根據需要將圖表複製/粘貼到當前幻燈片中,然後以編程方式修改數據。

其中一個最大的優點就是你(或者客戶端,如果你選擇讓他們進入技巧)可以快速方便地更改格式,而無需更改一行代碼。

回到原來的問題,原生PPT圖表中的數據很容易找到。快速VBA示例:

Sub FiddleTheChartData() 

Dim oSh As Shape 
Dim oCht As Chart 
Dim oChtData As ChartData 
Dim x As Long 

' For purposes of example, assume that we've got a chart in PPT 
' and that it's selected: 
Set oSh = ActiveWindow.Selection.ShapeRange(1) 
' We could as easily pass a reference to the shape to this routine as a param 

' Sanity test; if it's not a chart, bug out 
If Not oSh.HasChart Then 
    Exit Sub 
Else 
    Set oCht = oSh.Chart 
    Set oChtData = oCht.ChartData 
End If 

With oChtData 
    .Activate 
    .Workbook.Worksheets("Sheet1").Cells(3, 3) = 42 
End With 

' This leaves the workbook open in Excel, so: 
oChtData.Workbook.Close 

' Might want to iterate through the Workbook.Parent's worksheets and 
' if there are more than one, decide whether or not to close them and dismiss 
' Excel or not 

End Sub 
+0

非常感謝!這正是我所期待的 – sbrother