Akıllı İşaretleyicileri İşleyerek Grafik Oluşturun
Aspose.Cells API’ler, WorkbookDesigner sınıfının, biçimlendirmenin ve formüllerin tasarımcı elektronik tablolarına yerleştirildiği ve ardından verileri Akıllı İşaretleyicilere göre doldurmak için belirtilen veri kaynaklarına göre işlendiği Akıllı İşaretleyicilerle çalışmasını sağlar. Aşağıdaki adımları gerektiren Akıllı İşaretleyicileri işleyerek Excel grafikleri oluşturmak da mümkündür.
- Tasarımcı e-tablosunun oluşturulması
- Belirtilen veri kaynağına göre tasarımcı elektronik tablosu işleniyor
- Doldurulmuş verilere dayalı grafiğin oluşturulması
Tasarımcı Elektronik Tablosunun Oluşturulması
Bir tasarımcı elektronik tablosu, Microsoft Excel uygulaması veya Aspose.Cells API’leri ile oluşturulmuş, içeriğin çalışma zamanında doldurulacağı görsel biçimlendirmeyi, formülleri ve akıllı işaretçileri içeren basit bir Excel dosyasıdır.
Basitlik adına, Aspose.Cells for Java API’i kullanarak tasarımcı elektronik tablosunu oluşturacağız ve daha sonra gösteri amacıyla dinamik olarak oluşturulmuş bir veri kaynağına karşı işleyeceğiz.
Java
//Create an instance of Workbook
Workbook book = new Workbook();
//Access the first (default) Worksheet from the collection
Worksheet dataSheet = book.getWorksheets().get(0);
//Name the first Worksheet for referencing
dataSheet.setName("ChartData");
//Access the CellsCollection of ChartData Worksheet
Cells cells = dataSheet.getCells();
//Place the markers in the Worksheet according to desired layout
cells.get("A1").putValue("&=$Headers(horizontal)");
cells.get("A2").putValue("&=$Year2000(horizontal)");
cells.get("A3").putValue("&=$Year2005(horizontal)");
cells.get("A4").putValue("&=$Year2010(horizontal)");
cells.get("A5").putValue("&=$Year2015(horizontal)");
Bu aşamada ortaya çıkan elektronik tabloyu kaydederseniz, çalışma tablosundaki veriler aşağıdaki gibi görünecektir.
İşleme Tasarımcısı Elektronik Tablosu
Tasarımcı elektronik tablosunu işlemek için, tasarımcı elektronik tablosunda kullanılan Akıllı İşaretleyicilere karşılık gelen bir veri kaynağına sahip olmamız gerekir. Örneğin, şu şekilde bir Akıllı İşaretleyici girişi oluşturduk:&=$Başlıklar(yatay) değişkeni Headers adına göre temsil ederken, anahtar**(yatay)** verilerin yatay olarak doldurulması gerektiğini önerir.
Bu kullanım örneğini göstermek için, veri kaynağını sıfırdan oluşturacağız ve onu önceki adımda oluşturulan tasarımcı elektronik tablosuna göre işleyeceğiz. Ancak, gerçek zamanlı senaryoda, veriler daha sonraki işlemler için zaten mevcut olabilir, bu nedenle veriler zaten mevcutsa veri kaynağının oluşturulmasını atlayabilirsiniz.
Java
//Create string arrays which will serve as data sources to the smart markers
String[]headers = new String[]{"", "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12"};
String[]year2000 = new String[]{"2000", "310", "0", "110", "15", "20", "25", "30", "1222", "200", "421", "210", "133"};
String[]year2005 = new String[]{"2005", "508", "0", "170", "280", "190", "400", "105", "132", "303", "199", "120", "100"};
String[]year2010 = new String[]{"2010", "0", "210", "230", "1420", "1530", "160", "170", "110", "199", "129", "120", "230"};
String[]year2015 = new String[]{"2015", "2818", "320", "340", "260", "210", "310", "220", "0", "0", "0", "0", "122"};
Akıllı İşaretleyicilerin işlenmesi aşağıdaki gibi oldukça basittir.
Java
//Create an instance of WorkbookDesigner
WorkbookDesigner designer = new WorkbookDesigner();
//Set the Workbook property for the instance of WorkbookDesigner
designer.setWorkbook(book);
//Set data sources for smart markers
designer.setDataSource("Headers", headers);
designer.setDataSource("Year2000", year2000);
designer.setDataSource("Year2005", year2005);
designer.setDataSource("Year2010", year2010);
designer.setDataSource("Year2015", year2015);
//Process the designer spreadsheet against the provided data sources
designer.process();
Bu aşamada elektronik tabloyu kaydederseniz, veriler aşağıdaki gibi görünecektir.
Grafiğin Oluşturulması
Veriler yerleştirildikten sonra, tek yapmamız gereken veri kaynağına dayalı bir grafik oluşturmaktır. Örneği basit tutmak için, grafiği daha fazla yapılandırmamıza gerek kalmaması için Chart.setChartDataRange yöntemini kullanacağız.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(GenerateChartByProcessingSmartMarkers.class); | |
// Create an instance of Workbook | |
Workbook book = new Workbook(); | |
// Access the first (default) Worksheet from the collection | |
Worksheet dataSheet = book.getWorksheets().get(0); | |
// Name the first Worksheet for referencing | |
dataSheet.setName("ChartData"); | |
// Access the CellsCollection of ChartData Worksheet | |
Cells cells = dataSheet.getCells(); | |
// Place the markers in the Worksheet according to desired layout | |
cells.get("A1").putValue("&=$Headers(horizontal)"); | |
cells.get("A2").putValue("&=$Year2000(horizontal)"); | |
cells.get("A3").putValue("&=$Year2005(horizontal)"); | |
cells.get("A4").putValue("&=$Year2010(horizontal)"); | |
cells.get("A5").putValue("&=$Year2015(horizontal)"); | |
// Create string arrays which will serve as data sources to the smart markers | |
String[] headers = new String[] { "", "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", | |
"Item 8", "Item 9", "Item 10", "Item 11", "Item 12" }; | |
String[] year2000 = new String[] { "2000", "310", "0", "110", "15", "20", "25", "30", "1222", "200", "421", | |
"210", "133" }; | |
String[] year2005 = new String[] { "2005", "508", "0", "170", "280", "190", "400", "105", "132", "303", "199", | |
"120", "100" }; | |
String[] year2010 = new String[] { "2010", "0", "210", "230", "1420", "1530", "160", "170", "110", "199", "129", | |
"120", "230" }; | |
String[] year2015 = new String[] { "2015", "2818", "320", "340", "260", "210", "310", "220", "0", "0", "0", "0", | |
"122" }; | |
// Create an instance of WorkbookDesigner | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Set the Workbook property for the instance of WorkbookDesigner | |
designer.setWorkbook(book); | |
// Set data sources for smart markers | |
designer.setDataSource("Headers", headers); | |
designer.setDataSource("Year2000", year2000); | |
designer.setDataSource("Year2005", year2005); | |
designer.setDataSource("Year2010", year2010); | |
designer.setDataSource("Year2015", year2015); | |
// Process the designer spreadsheet against the provided data sources | |
designer.process(); | |
// Convert all string values of ChartData to numbers | |
// This is an additional step as we have imported the string values | |
dataSheet.getCells().convertStringToNumericValue(); | |
// Save the number of rows & columns from the ChartData in separate variables | |
// These values will be used later to identify the chart's data range from ChartData | |
int chartRows = dataSheet.getCells().getMaxDataRow() + 1; | |
int chartCols = dataSheet.getCells().getMaxDataColumn() + 1; | |
// Add a new Worksheet of type Chart to Workbook | |
int chartSheetIdx = book.getWorksheets().add(SheetType.CHART); | |
// Access the newly added Worksheet via its index | |
Worksheet chartSheet = book.getWorksheets().get(chartSheetIdx); | |
// Name the Worksheet | |
chartSheet.setName("Chart"); | |
// Add a chart of type ColumnStacked to newly added Worksheet | |
int chartIdx = chartSheet.getCharts().add(ChartType.COLUMN_STACKED, 0, 0, chartRows, chartCols); | |
// Access the newly added Chart via its index | |
Chart chart = chartSheet.getCharts().get(chartIdx); | |
// Identify the chart's data range | |
Range dataRange = dataSheet.getCells().createRange(0, 1, chartRows, chartCols - 1); | |
// Set the data range for the chart | |
chart.setChartDataRange(dataRange.getRefersTo(), false); | |
// Set the chart to size with window | |
chart.setSizeWithWindow(true); | |
// Set the format for the tick labels | |
chart.getValueAxis().getTickLabels().setNumberFormat("$###,### K"); | |
// Set chart title | |
chart.getTitle().setText("Sales Summary"); | |
// Set ChartSheet an active sheet | |
book.getWorksheets().setActiveSheetIndex(chartSheetIdx); | |
// Save the final result | |
book.save(dataDir + "report.xlsx"); |
Son tablo aşağıdaki gibi görünüyor.