Here is the VB.NET code equivalent to C# code in the first post. I have also attached .vb file.
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports System.IO
Imports Aspose.Slides
Imports Aspose.Cells
Module ExcelChartAsOleObject
Public Class ExcelChart
Shared Sub Run()
'Uncomment it to avoid Evaluation Sheet
'Aspose.Cells.License lic = new Aspose.Cells.License();
'lic.SetLicense(@"D:\Shakeel Projects\Aspose\License\new2\Aspose.Total.lic");
'Step - 1: Create an excel chart using Aspose.Cells
'--------------------------------------------------
'Create a workbook
Dim wb As Workbook = New Workbook()
'Add an excel chart
Dim chartRows As Integer = 55
Dim chartCols As Integer = 25
Dim chartSheetIndex As Integer = AddExcelChartInWorkbook(wb, chartRows, chartCols)
'Step - 2: Set the OLE size of the chart. using Aspose.Cells
'-----------------------------------------------------------
wb.Worksheets.SetOleSize(0, chartRows, 0, chartCols)
'Step - 3: Get the image of the chart with Aspose.Cells
'-----------------------------------------------------------
Dim imgChart As Bitmap = wb.Worksheets(chartSheetIndex).Charts(0).ToImage()
'Save the workbook to stream
Dim wbStream As MemoryStream = wb.SaveToStream()
'Step - 4 AND 5
'-----------------------------------------------------------
'Step - 4: Embed the chart as an OLE object inside .ppt presentation using Aspose.Slides
'-----------------------------------------------------------
'Step - 5: Replace the object changed image with the image obtained in step 3 to cater Object Changed Issue
'-----------------------------------------------------------
'Create a presentation
Dim pres As Presentation = New Presentation()
Dim sld As Slide = pres.GetSlideByPosition(1)
'Add the workbook on slide
AddExcelChartInPresentation(pres, sld, wbStream, imgChart)
'Step - 6: Write the output presentation on disk
'-----------------------------------------------------------
pres.Write("c:\test\output2.ppt")
End Sub
Shared Function AddExcelChartInWorkbook(ByVal wb As Workbook, ByVal chartRows As Integer, ByVal chartCols As Integer) As Integer
Dim cellsName As String() = {
"A1", "A2", "A3", "A4",
"B1", "B2", "B3", "B4",
"C1", "C2", "C3", "C4",
"D1", "D2", "D3", "D4",
"E1", "E2", "E3", "E4"
}
'Array of cell data
Dim cellsValue As Integer() = {
67, 86, 68, 91,
44, 64, 89, 48,
46, 97, 78, 60,
43, 29, 69, 26,
24, 40, 38, 25
}
'Add a new worksheet to populate cells with data
Dim dataSheetIdx As Integer = wb.Worksheets.Add()
Dim dataSheet As Worksheet = wb.Worksheets(dataSheetIdx)
Dim sheetName As String = "DataSheet"
dataSheet.Name = sheetName
'Populate DataSheet with data
For i As Integer = 0 To cellsName.Length - 1
Dim cellName As String = cellsName(i)
Dim cellValue As Integer = cellsValue(i)
dataSheet.Cells(cellName).PutValue(cellValue)
Next
'Add a chart sheet
Dim chartSheetIdx As Integer = wb.Worksheets.Add(SheetType.Chart)
Dim chartSheet As Worksheet = wb.Worksheets(chartSheetIdx)
chartSheet.Name = "ChartSheet"
'Add a chart in ChartSheet with data series from DataSheet
Dim chartIdx As Integer = chartSheet.Charts.Add(ChartType.Column, 0, chartRows, 0, chartCols)
Dim _chart As Chart = chartSheet.Charts(chartIdx)
_chart.NSeries.Add(sheetName + "!A1:E1", False)
_chart.NSeries.Add(sheetName + "!A2:E2", False)
_chart.NSeries.Add(sheetName + "!A3:E3", False)
_chart.NSeries.Add(sheetName + "!A4:E4", False)
'Set ChartSheet an active sheet
wb.Worksheets.ActiveSheetIndex = chartSheetIdx
AddExcelChartInWorkbook = chartSheetIdx
End Function
Shared Sub AddExcelChartInPresentation(ByVal pres As Presentation, ByVal sld As Slide, ByVal wbStream As Stream, ByVal imgChart As Bitmap)
Dim pic As Aspose.Slides.Picture = New Aspose.Slides.Picture(pres, imgChart)
Dim picId As Integer = pres.Pictures.Add(pic)
Dim slideWidth As Integer = pres.SlideSize.Width
Dim slideHeight As Integer = pres.SlideSize.Height
Dim x As Integer = 0
Dim chartOleData(0 To wbStream.Length) As Byte
wbStream.Position = 0
wbStream.Read(chartOleData, 0, chartOleData.Length)
Dim oof As OleObjectFrame = sld.Shapes.AddOleObjectFrame(x, 0, slideWidth, slideHeight, "Excel.Sheet.8", chartOleData)
oof.PictureId = picId
End Sub
End Class
End Module