Hi,
I am using your sample to embed Excel chart into presentation. The difference is that chart's type is AREA_STACKED and I would like to change foreground color of first series to RED. However, resulting chart has standard color scheme until it being activated (double-clicked) in the presentation. Other stacked chart types (e.g., BAR_STACKED) work fine.
Is there fix for that?
public static void Run() {
try
{
//Create a workbook
Workbook wb = new Workbook();
//Add an excel chart
int chartRows = 55;
int chartCols = 25;
int chartSheetIndex = AddExcelChartInWorkbook(wb, chartRows, chartCols);
//Set chart ole size
wb.setOleSize(0, chartRows, 0, chartCols);
//Get the chart image and save to stream
ByteArrayOutputStream imageStream=new ByteArrayOutputStream();
wb.getWorksheets().getSheet(chartSheetIndex).getCharts()getChart(0).toImage(imageStream, new ImageOptions());
//Save the workbook to stream
ByteArrayOutputStream bout=new ByteArrayOutputStream();
wb.save(bout);
//Create a presentation
Presentation pres = new Presentation();
Slide sld = pres.getSlideByPosition(1);
//Add the workbook on slide
AddExcelChartInPresentation(pres, sld, bout.toByteArray(), imageStream.toByteArray());
//Write the presentation to disk
pres.write(new FileOutputStream("d:\\outputJ.ppt"));
}catch(Exception e){
e.printStackTrace();
}
}
static int AddExcelChartInWorkbook(Workbook wb, int chartRows, int chartCols)
{
//Array of cell names
String[] cellsName = new 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
int[] cellsValue = new int[]
{
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
Worksheet dataSheet =wb.getWorksheets().addSheet();
String sheetName = "DataSheet";
dataSheet.setName(sheetName);
//Populate DataSheet with data
int size=Array.getLength(cellsName);
for (int i = 0; i < size; i++)
{
String cellName = cellsName[i];
int cellValue = cellsValue[i];
dataSheet.getCells().getCell(cellName).setValue(cellValue);
}
//Add a chart sheet
Worksheet chartSheet = wb.getWorksheets().addSheet(SheetType.CHART);
chartSheet.setName("ChartSheet");
int chartSheetIdx = chartSheet.getIndex();
//Add a chart in ChartSheet with data series from DataSheet
Chart chart = chartSheet.getCharts().addChart(ChartType.AREA_STACKED, 0, chartRows, 0, chartCols);
int first = chart.getNSeries().add(sheetName + "!A1:E1", false);
chart.getNSeries().get(first).getArea().setForegroundColor(Color.RED);
chart.getNSeries().add(sheetName + "!A2:E2", false);
chart.getNSeries().add(sheetName + "!A3:E3", false);
chart.getNSeries().add(sheetName + "!A4:E4", false);
//Set ChartSheet as active sheet
wb.getWorksheets().setActiveSheet(chartSheetIdx);
return chartSheetIdx;
}
static void AddExcelChartInPresentation(Presentation pres, Slide sld, byte[] wbArray, byte[] imgChart) throws Exception
{
com.aspose.slides.Picture pic=new com.aspose.slides.Picture(pres,new ByteArrayInputStream(imgChart));
int picId = pres.getPictures().add(pic);
int slideWidth = (int)pres.getSlideSize().getX() - 1500;
int slideHeight = (int)pres.getSlideSize().getY();
int x = 1500 / 2;
OleObjectFrame oof = sld.getShapes().addOleObjectFrame(x, 0, slideWidth, slideHeight, "Excel.Sheet.8", wbArray);
oof.setPictureId(picId);
}
This message was posted using Page2Forum from Creating Excel Chart and Embedding it in Presentation as OLE... - Aspose.Slides for Java