إنشاء مخطط Excel وإدراجه في العرض التقديمي ككائن OLE
Contents
[
Hide
]
في شروح PowerPoint، استخدام المخططات القابلة للتحرير لعرض البيانات رسوميًا هو نشاط شائع. توفر Aspose دعمًا لإنشاء مخططات Excel باستخدام Aspose.Cells لـ Java، ويمكن بعد ذلك تضمين هذه المخططات ككائن OLE في شريحة PowerPoint عبر Aspose.Slides لـ PHP من خلال Java. يغطي هذا المقال الخطوات المطلوبة مع تنفيذ لإنشاء وتضمين مخطط MS Excel ككائن OLE في العرض التقديمي PowerPoint باستخدام Aspose.Cells لـ Java وAspose.Slides لـ PHP عبر Java.
الخطوات المطلوبة
الخطوات التالية مطلوبة لإنشاء وتضمين مخطط Excel ككائن OLE في شريحة PowerPoint:
إنشاء مخطط Excel باستخدام Aspose.Cells لـ Java.
تعيين حجم OLE لمخطط Excel باستخدام Aspose.Cells لـ Java.
الحصول على صورة لمخطط Excel باستخدام Aspose.Cells لـ Java.
تضمين مخطط Excel ككائن OLE داخل العرض التقديمي PPTX باستخدام Aspose.Slides لـ PHP عبر Java.
استبدال الصورة المعدلة للأداة بالصورة التي تم الحصول عليها في الخطوة 3 لحل مشكلة تغيير الكائن.
حفظ العرض التقديمي الناتج على القرص بتنسيق PPTX.
تنفيذ الخطوات المطلوبة
تنفيذ الخطوات المذكورة أعلاه كما يلي:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.getWorksheets().setOleSize(0, chartRows, 0, chartCols); | |
//Get the chart image and save to stream | |
com.aspose.cells.ImageOrPrintOptions opts= new com.aspose.cells.ImageOrPrintOptions(); | |
opts.setImageFormat(com.aspose.cells.ImageFormat.getPng()); | |
ByteArrayOutputStream imageStream=new ByteArrayOutputStream(); | |
wb.getWorksheets().get(chartSheetIndex).getCharts().get(0).toImage(imageStream, opts); | |
//Save the workbook to stream | |
ByteArrayOutputStream bout=new ByteArrayOutputStream(); | |
wb.save(bout,com.aspose.cells.SaveFormat.EXCEL_97_TO_2003); | |
//Create a presentation | |
Presentation pres = new Presentation(); | |
ISlide sld = pres.getSlides().get_Item(0); | |
//Add the workbook on slide | |
AddExcelChartInPresentation(pres, sld, bout.toByteArray(), imageStream.toByteArray()); | |
//Write the presentation to disk | |
pres.save("outputJ.pptx", SaveFormat.Pptx); | |
} catch (Exception e) { | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static void AddExcelChartInPresentation(Presentation pres, ISlide sld, byte[] wbArray, byte[] imgChart) throws Exception | |
{ | |
double oleHeight = pres.getSlideSize().getSize().getHeight(); | |
double oleWidth = pres.getSlideSize().getSize().getWidth(); | |
Workbook wb=new Workbook(); | |
//Createing and EXCEL_97_TO_2003 LoadOptions object | |
com.aspose.cells.LoadOptions loadOptions = new com.aspose.cells.LoadOptions(com.aspose.cells.FileFormatType.EXCEL_97_TO_2003); | |
wb=new Workbook(new ByteArrayInputStream(wbArray),loadOptions); | |
IOleObjectFrame oof = sld.getShapes().addOleObjectFrame(0f, 0f, (float)oleWidth, (float)oleHeight, "Excel.Sheet.8", wbArray); | |
oof.getSubstitutePictureFormat().getPicture().setImage(pres.getImages().addImage(new ByteArrayInputStream(imgChart))); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 | |
int dataSheetIndex =wb.getWorksheets().add(); | |
Worksheet dataSheet =wb.getWorksheets().get(dataSheetIndex); | |
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().get(cellName).setValue(cellValue); | |
} | |
//Add a chart sheet | |
int WorksheetIndex = wb.getWorksheets().add(SheetType.CHART); | |
Worksheet chartSheet = wb.getWorksheets().get(WorksheetIndex); | |
chartSheet.setName("ChartSheet"); | |
int chartSheetIdx = chartSheet.getIndex(); | |
//Add a chart in ChartSheet with data series from DataSheet | |
int chIndex = chartSheet.getCharts().add(ChartType.COLUMN, 0, chartRows, 0, chartCols); | |
Chart chart=chartSheet.getCharts().get(chIndex); | |
chart.getNSeries().add(sheetName + "!A1:E1", false); | |
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().setActiveSheetIndex(chartSheetIdx); | |
return chartSheetIdx; | |
} |
سيحتوي العرض التقديمي الذي تم إنشاؤه من خلال الطريقة أعلاه على مخطط Excel ككائن OLE يمكن تنشيطه عن طريق النقر المزدوج على إطار كائن OLE.
الخاتمة
باستخدام Aspose.Cells لـ Java جنبًا إلى جنب مع Aspose.Slides لـ PHP عبر Java، يمكننا إنشاء أي من مخططات Excel المدعومة من قبل Aspose.Cells لـ Java وتضمين المخطط الذي تم إنشاؤه ككائن OLE في شريحة PowerPoint. يمكن أيضًا تعريف حجم OLE لمخطط Excel. يمكن لمستخدمي النهاية تحرير مخطط Excel مثل أي كائن OLE آخر.