Tworzenie wykresów Excel i osadzanie ich w prezentacjach jako obiekty OLE
Tło
W programie PowerPoint używanie edytowalnych wykresów do graficznego wyświetlania danych jest powszechną praktyką. Aspose obsługuje tworzenie wykresów Excel przy użyciu Aspose.Cells for Java, a te wykresy mogą być następnie osadzane jako obiekty OLE na slajdach PowerPoint za pośrednictwem Aspose.Slides for Java. Ten artykuł opisuje niezbędne kroki i zawiera przykłady kodu Java do tworzenia wykresu Excel i osadzania go jako obiektu OLE w prezentacji PowerPoint przy użyciu Aspose.Cells i Aspose.Slides.
Wymagane kroki
Poniższa kolejność kroków jest wymagana do utworzenia i osadzenia wykresu Excel jako obiektu OLE na slajdzie PowerPoint:
- Utwórz wykres Excel przy użyciu Aspose.Cells.
- Ustaw rozmiar OLE wykresu Excel przy użyciu Aspose.Cells.
- Uzyskaj obraz wykresu Excel przy użyciu Aspose.Cells.
- Osadź wykres Excel jako obiekt OLE w prezentacji PPTX przy użyciu Aspose.Slides.
- Zastąp obraz „EMBEDDED OLE OBJECT” obrazem uzyskanym w kroku 3, aby rozwiązać problem problem podglądu obiektu.
- Zapisz prezentację na dysku w formacie PPTX.
Implementacja wymaganych kroków
Implementacja w Javie powyższych kroków wygląda następująco:
// Utwórz skoroszyt.
Workbook workbook = new Workbook();
// Dodaj wykres Excel.
int chartRows = 55;
int chartCols = 25;
int chartSheetIndex = AddExcelChartInWorkbook(workbook, chartRows, chartCols);
// Ustaw rozmiar OLE wykresu.
workbook.getWorksheets().setOleSize(0, chartRows, 0, chartCols);
// Pobierz obraz wykresu i zapisz go do strumienia.
com.aspose.cells.ImageOrPrintOptions printOptions = new com.aspose.cells.ImageOrPrintOptions();
printOptions.setImageFormat(com.aspose.cells.ImageFormat.getPng());
ByteArrayOutputStream imageStream = new ByteArrayOutputStream();
workbook.getWorksheets().get(chartSheetIndex).getCharts().get(0).toImage(imageStream, printOptions);
// Zapisz skoroszyt do strumienia.
ByteArrayOutputStream workbookStream = new ByteArrayOutputStream();
workbook.save(workbookStream, com.aspose.cells.SaveFormat.EXCEL_97_TO_2003);
// Utwórz prezentację.
Presentation presentation = new Presentation();
ISlide slide = presentation.getSlides().get_Item(0);
// Dodaj skoroszyt do slajdu.
AddExcelChartInPresentation(presentation, slide, workbookStream.toByteArray(), imageStream.toByteArray());
// Zapisz prezentację na dysku.
presentation.save("OutputChart.pptx", SaveFormat.Pptx);
presentation.dispose();
static void AddExcelChartInPresentation(Presentation presentation, ISlide slide, byte[] workbookArray, byte[] chartImage) throws Exception
{
double oleHeight = presentation.getSlideSize().getSize().getHeight();
double oleWidth = presentation.getSlideSize().getSize().getWidth();
// Utwórz obiekt LoadOptions typu EXCEL_97_TO_2003.
com.aspose.cells.LoadOptions loadOptions = new com.aspose.cells.LoadOptions(com.aspose.cells.FileFormatType.EXCEL_97_TO_2003);
Workbook workbook = new Workbook(new ByteArrayInputStream(workbookArray),loadOptions);
IOleObjectFrame oleFrame = slide.getShapes().addOleObjectFrame(0f, 0f, (float)oleWidth, (float)oleHeight, "Excel.Sheet.8", workbookArray);
oleFrame.getSubstitutePictureFormat().getPicture().setImage(presentation.getImages().addImage(new ByteArrayInputStream(chartImage)));
}
static int AddExcelChartInWorkbook(Workbook workbook, int chartRows, int chartCols)
{
// Tablica nazw komórek.
String[] cellNames = new String[]
{
"A1", "A2", "A3", "A4",
"B1", "B2", "B3", "B4",
"C1", "C2", "C3", "C4",
"D1", "D2", "D3", "D4",
"E1", "E2", "E3", "E4"
};
// Tablica danych komórek.
int[] cellValues = new int[]
{
67, 86, 68, 91,
44, 64, 89, 48,
46, 97, 78, 60,
43, 29, 69, 26,
24, 40, 38, 25
};
// Dodaj nowy arkusz, aby wypełnić komórki danymi.
int dataSheetIndex = workbook.getWorksheets().add();
Worksheet dataSheet = workbook.getWorksheets().get(dataSheetIndex);
String sheetName = "DataSheet";
dataSheet.setName(sheetName);
// Wypełnij arkusz danych danymi.
int size = Array.getLength(cellNames);
for (int i = 0; i < size; i++)
{
String cellName = cellNames[i];
int cellValue = cellValues[i];
dataSheet.getCells().get(cellName).setValue(cellValue);
}
// Dodaj arkusz wykresu.
int worksheetIndex = workbook.getWorksheets().add(SheetType.CHART);
Worksheet chartSheet = workbook.getWorksheets().get(worksheetIndex);
chartSheet.setName("ChartSheet");
int chartSheetIndex = chartSheet.getIndex();
// Dodaj wykres do arkusza wykresu z serią danych z arkusza danych.
int chartIndex = chartSheet.getCharts().add(ChartType.COLUMN, 0, chartRows, 0, chartCols);
Chart chart = chartSheet.getCharts().get(chartIndex);
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);
// Ustaw arkusz wykresu jako aktywny arkusz.
workbook.getWorksheets().setActiveSheetIndex(chartSheetIndex);
return chartSheetIndex;
}
Prezentacja utworzona w powyższy sposób będzie zawierać wykres Excel jako obiekt OLE, który można aktywować podwójnym kliknięciem w ramkę obiektu OLE.
Podsumowanie
Korzystając z Aspose.Cells for Java w połączeniu z Aspose.Slides for Java, możemy tworzyć dowolny wykres Excel obsługiwany przez Aspose.Cells i osadzać go jako obiekt OLE na slajdzie PowerPoint. Rozmiar OLE wykresu Excel również może być określony. Użytkownicy końcowi mogą następnie edytować wykres Excel tak jak każdy inny obiekt OLE.