Android'de Sunumlarda Grafik Çalışma Kitaplarını Yönetme
Genel Bakış
Bu makale Aspose.Slides içinde grafik çalışma kitaplarıyla nasıl çalışılacağını açıklar. Çalışma kitabı akışları aracılığıyla grafik verilerini okuma ve yazma, çalışma kitabı hücrelerini grafik veri etiketi olarak kullanma, çalışma sayfası koleksiyonlarına erişme ve grafik değerleri için veri kaynağı türünü belirtme konularını gösterir.
Ayrıca harici çalışma kitaplarını grafik veri kaynakları olarak kullanmayı kapsar. Örnekler, harici bir çalışma kitabı oluşturup atamayı, bir grafikle ilişkilendirilmiş harici çalışma kitabının yolunu almayı ve çalışma kitabı mevcut olduğunda grafik verilerini düzenlemeyi gösterir.
Bir Çalışma Kitabından Grafik Verilerini Okuma ve Yazma
Aspose.Slides, grafik verileri çalışma kitaplarını (Aspose.Cells ile düzenlenen) okumanıza ve yazmanıza izin veren ReadWorkbookStream ve WriteWorkbookStream yöntemlerini sağlar. Not grafik verileri aynı şekilde düzenlenmiş olmalı veya kaynağa benzer bir yapıya sahip olmalıdır.
Bu Java kodu örnek bir işlemi gösterir:
Presentation pres = new Presentation("chart.pptx");
try {
Chart chart = (Chart) pres.getSlides().get_Item(0).getShapes().get_Item(0);
IChartData data = chart.getChartData();
byte[] stream = data.readWorkbookStream();
data.getSeries().clear();
data.getCategories().clear();
data.writeWorkbookStream(stream);
} finally {
if (pres != null) pres.dispose();
}
Bir Çalışma Kitabı Hücresini Grafik Veri Etiketi Olarak Ayarlama
- Presentation sınıfının bir örneğini oluşturun.
- İndeksi üzerinden bir slaytın referansını alın.
- Bazı veri içeren bir Balon grafiği ekleyin.
- Grafik serisine erişin.
- Çalışma kitabı hücresini veri etiketi olarak ayarlayın.
- Sunumu kaydedin.
Bu Java kodu, bir çalışma kitabı hücresini grafik veri etiketi olarak ayarlamayı gösterir:
String lbl0 = "Label 0 cell value";
String lbl1 = "Label 1 cell value";
String lbl2 = "Label 2 cell value";
// Sunum dosyasını temsil eden bir sunum sınıfını örnekler
Presentation pres = new Presentation("chart2.pptx");
try {
ISlide slide = pres.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.Bubble, 50, 50, 600, 400, true);
IChartSeriesCollection series = chart.getChartData().getSeries();
IDataLabelCollection dataLabelCollection = series.get_Item(0).getLabels();
dataLabelCollection.getDefaultDataLabelFormat().setShowLabelValueFromCell(true);
IChartDataWorkbook wb = chart.getChartData().getChartDataWorkbook();
dataLabelCollection.get_Item(0).setValueFromCell(wb.getCell(0, "A10", lbl0));
dataLabelCollection.get_Item(1).setValueFromCell(wb.getCell(0, "A11", lbl1));
dataLabelCollection.get_Item(2).setValueFromCell(wb.getCell(0, "A12", lbl2));
pres.save("resultchart.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Çalışma Sayfalarını Yönetme
Bu Java kodu, IChartDataWorkbook.Worksheets yönteminin bir çalışma sayfası koleksiyonuna erişmek için kullanıldığı bir işlemi gösterir:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 500);
IChartDataWorkbook wb = chart.getChartData().getChartDataWorkbook();
for (int i = 0; i < wb.getWorksheets().size(); i++)
System.out.println(wb.getWorksheets().get_Item(i).getName());
} finally {
if (pres != null) pres.dispose();
}
Veri Kaynağı Türünü Belirtme
Bu Java kodu, bir veri kaynağı için tür belirtmeyi gösterir:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Column3D, 50, 50, 600, 400, true);
IStringChartValue val = chart.getChartData().getSeries().get_Item(0).getName();
val.setDataSourceType(DataSourceType.StringLiterals);
val.setData("LiteralString");
val = chart.getChartData().getSeries().get_Item(1).getName();
val.setData(chart.getChartData().getChartDataWorkbook().getCell(0, "B1", "NewCell"));
pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Desteklenmeyen Gömülü Çalışma Kitabı Biçimlerini Algılama
Aspose.Slides, bazı grafiklerde gömülebilen Excel ikili çalışma kitabı (.xlsb) formatını desteklemez. Desteklenmeyen biçimleri algılamak ve bu grafikleri atlamak için IChartData üzerindeki getEmbeddedWorkbookType metodunu ve WorkbookType enumunu kullanabilirsiniz.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
for (IShape shape : slide.getShapes()) {
if (!(shape instanceof IChart)) continue;
IChart chart = (IChart)shape;
IChartData chartData = chart.getChartData();
if (chartData.getDataSourceType() == ChartDataSourceType.InternalWorkbook &&
chartData.getEmbeddedWorkbookType() == WorkbookType.WorkbookBinaryMacro) {
// .xlsb formatındaki gömülü çalışma kitabı desteklenmiyor.
continue;
}
// Burada grafik çalışma kitabı verilerini okuyun veya değiştirin.
}
} finally {
presentation.dispose();
}
Harici Çalışma Kitabı
Aspose.Slides, grafikler için veri kaynağı olarak harici çalışma kitaplarını destekler.
Harici Çalışma Kitabı Oluşturma
readWorkbookStream ve setExternalWorkbook yöntemlerini kullanarak ya sıfırdan bir harici çalışma kitabı oluşturabilir ya da dahili bir çalışma kitabını harici hâle getirebilirsiniz.
Bu Java kodu, harici çalışma kitabı oluşturma sürecini gösterir:
Presentation pres = new Presentation();
try {
final String workbookPath = "externalWorkbook1.xlsx";
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 600);
FileOutputStream fileStream = new FileOutputStream(workbookPath);
try {
byte[] workbookData = chart.getChartData().readWorkbookStream();
fileStream.write(workbookData, 0, workbookData.length);
} finally {
if (fileStream != null) fileStream.close();
}
chart.getChartData().setExternalWorkbook(workbookPath);
pres.save("externalWorkbook.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Harici Çalışma Kitabını Ayarlama
setExternalWorkbook yöntemiyle bir grafiğe dış veri kaynağı olarak harici bir çalışma kitabı atayabilirsiniz. Bu yöntem aynı zamanda harici çalışma kitabının yolu güncellendiğinde (taşındıysa) yolu değiştirmek için de kullanılabilir.
Uzak konumlardaki veya kaynaklardaki çalışma kitaplarındaki verileri düzenleyemezsiniz, ancak bu çalışma kitaplarını harici veri kaynağı olarak yine de kullanabilirsiniz. Harici bir çalışma kitabı için göreceli bir yol sağlanırsa, otomatik olarak tam yola dönüştürülür.
Bu Java kodu, harici bir çalışma kitabını nasıl ayarlayacağınızı gösterir:
// Presentation sınıfının bir örneğini oluşturur
Presentation pres = new Presentation("chart.pptx");
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 600, false);
IChartData chartData = chart.getChartData();
chartData.setExternalWorkbook("externalWorkbook.xlsx");
chartData.getSeries().add(chartData.getChartDataWorkbook().getCell(0, "B1"), ChartType.Pie);
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForPieSeries(chartData.getChartDataWorkbook().getCell(0, "B2"));
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForPieSeries(chartData.getChartDataWorkbook().getCell(0, "B3"));
chartData.getSeries().get_Item(0).getDataPoints().addDataPointForPieSeries(chartData.getChartDataWorkbook().getCell(0, "B4"));
chartData.getCategories().add(chartData.getChartDataWorkbook().getCell(0, "A2"));
chartData.getCategories().add(chartData.getChartDataWorkbook().getCell(0, "A3"));
chartData.getCategories().add(chartData.getChartDataWorkbook().getCell(0, "A4"));
pres.save("Presentation_with_externalWorkbook.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
setExternalWorkbook yönteminin altındaki ChartData parametresi, bir Excel çalışma kitabının yüklenip yüklenmeyeceğini belirlemek için kullanılır.
ChartDatadeğeri false olarak ayarlandığında, yalnızca çalışma kitabı yolu güncellenir—grafik verisi hedef çalışma kitabından yüklenmez veya güncellenmez. Hedef çalışma kitabı mevcut değilse veya erişilemezse bu ayarı kullanmak isteyebilirsiniz.ChartDatadeğeri true olarak ayarlandığında, grafik verisi hedef çalışma kitabından güncellenir.
// Presentation sınıfının bir örneğini oluşturur
Presentation pres = new Presentation("chart.pptx");
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 400, 600, true);
IChartData chartData = chart.getChartData();
((ChartData)chartData).setExternalWorkbook("http://path/doesnt/exists", false);
pres.save("Presentation_with_externalWorkbookWithUpdateChartData.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Bir Grafiğin Harici Veri Kaynağı Çalışma Kitabı Yolunu Almak
- Presentation sınıfının bir örneğini oluşturun.
- İndeksi üzerinden bir slaytın referansını alın.
- Grafik şekli için bir nesne oluşturun.
- Grafiğin veri kaynağını temsil eden kaynak (
ChartDataSourceType) türü için bir nesne oluşturun. - Kaynak türünün harici çalışma kitabı veri kaynağı türüyle aynı olup olmadığını belirten ilgili koşulu belirtin.
Bu Java kodu işlemi gösterir:
// Presentation sınıfının bir örneğini oluşturur
Presentation pres = new Presentation("chart.pptx");
try {
ISlide slide = pres.getSlides().get_Item(1);
IChart chart = (IChart)slide.getShapes().get_Item(0);
int sourceType = chart.getChartData().getDataSourceType();
if (sourceType == ChartDataSourceType.ExternalWorkbook)
{
String path = chart.getChartData().getExternalWorkbookPath();
}
// Sunumu kaydeder
pres.save("result.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Grafik Verilerini Düzenleme
Harici çalışma kitaplarındaki verileri, dahili çalışma kitaplarındaki gibi düzenleyebilirsiniz. Harici bir çalışma kitabı yüklenemediğinde bir istisna fırlatılır.
Bu Java kodu, açıklanan sürecin bir uygulamasıdır:
// Presentation sınıfının bir örneğini oluşturur
Presentation pres = new Presentation("chart.pptx");
try {
IChart chart = (IChart)pres.getSlides().get_Item(0).getShapes().get_Item(0);
ChartData chartData = (ChartData)chart.getChartData();
chartData.getSeries().get_Item(0).getDataPoints().get_Item(0).getValue().getAsCell().setValue(100);
pres.save("presentation_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
SSS
Belirli bir grafiğin harici bir çalışma kitabına mı yoksa gömülü bir çalışma kitabına mı bağlandığını belirleyebilir miyim?
Evet. Bir grafiğin bir veri kaynağı türü ve bir harici çalışma kitabı yolu vardır; kaynak harici bir çalışma kitabı ise tam yolu okuyarak dış dosyanın kullanıldığını doğrulayabilirsiniz.
Harici çalışma kitapları için göreceli yollar destekleniyor mu ve nasıl depolanıyor?
Evet. Göreceli bir yol belirtildiğinde otomatik olarak mutlak yola dönüştürülür. Bu, proje taşınabilirliği için uygundur; ancak sunum, mutlak yolu PPTX dosyasında saklar.
Ağ kaynakları/paylaşımları üzerindeki çalışma kitaplarını kullanabilir miyim?
Evet, bu çalışma kitapları harici veri kaynağı olarak kullanılabilir. Ancak, uzaktaki çalışma kitaplarını doğrudan Aspose.Slides ile düzenlemek desteklenmez; sadece kaynak olarak kullanılabilirler.
Aspose.Slides, sunumu kaydederken harici XLSX dosyasını üzerine yazıyor mu?
Hayır. Sunum, harici dosyaya bir bağlantı saklar ve veriyi okurken bu bağlantıyı kullanır. Sunum kaydedildiğinde harici dosya değişmez.
Harici dosya şifreyle korunuyorsa ne yapmalıyım?
Aspose.Slides bağlanırken şifre kabul etmez. Yaygın bir yaklaşım, önceden korumayı kaldırmak veya bir şifresiz kopya (örneğin, Aspose.Cells kullanarak) hazırlamaktır ve o kopyaya bağlanmaktır.
Birden fazla grafik aynı harici çalışma kitabına başvurabilir mi?
Evet. Her grafik kendi bağlantısını saklar. Hepsi aynı dosyaya işaret ediyorsa, o dosya güncellendiğinde bir sonraki veri yüklemesinde her grafikte de yansır.