Creazione e personalizzazione di grafici
Possibili scenari di utilizzo
Un grafico è una visualizzazione visiva di informazioni. Aspose.Cells consente agli sviluppatori di visualizzare le informazioni nei grafici proprio come fa Microsoft Excel. La presentazione delle informazioni nei grafici è sempre utile ai decisori per prendere decisioni rapide e tempestive. È più facile vedere rapidamente confronti, modelli e tendenze nei dati con grafici piuttosto che numeri grezzi. La creazione di grafici in fase di esecuzione, basati sui dati in un foglio di calcolo, è una delle funzionalità utili di Aspose.Cells. Aspose.Cells supporta la creazione di grafici standard e personalizzati. Di seguito, mostreremo alcuni esempi con file di esempio su come creare alcuni tipi di grafici MS-Excel comuni utilizzando Aspose.Cells API.
Grafico a piramide
Quando viene eseguito il codice di esempio, al foglio di lavoro viene aggiunto un grafico a piramide. Si prega di consultare ilfile Excel di output del seguente codice di esempio.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C | |
// Output directory path | |
StringPtr outDir = new String("..\\Data\\02_OutputDirectory\\"); | |
// Path of output excel file | |
StringPtr outputChartTypePyramid = outDir->StringAppend(new String("outputChartTypePyramid.xlsx")); | |
// Create a new workbook | |
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(); | |
// Get first worksheet which is created by default | |
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0); | |
// Adding sample values to cells | |
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50); | |
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100); | |
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150); | |
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4); | |
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20); | |
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50); | |
// Adding a chart to the worksheet | |
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8); | |
// Accessing the instance of the newly added chart | |
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex); | |
// Adding SeriesCollection (chart data source) to the chart ranging from "A1" cell to "B3" | |
chart->GetNISeries()->Add(new String("A1:B3"), true); | |
// Saving the Excel file | |
workbook->Save(outputChartTypePyramid); |
Grafico a linee
Nell’esempio sopra, semplicemente cambiando il fileTipo di graficoaGraficoTipo_Lineacrea un grafico a linee. La fonte completa è fornita di seguito. quando il codice viene eseguito, al foglio di lavoro viene aggiunto un grafico a linee. Si prega di consultare ilfile Excel di output del seguente codice di esempio.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C | |
// Output directory path | |
StringPtr outDir = new String("..\\Data\\02_OutputDirectory\\"); | |
// Path of output excel file | |
StringPtr outputChartTypeLine = outDir->StringAppend(new String("outputChartTypeLine.xlsx")); | |
// Create a new workbook | |
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(); | |
// Get first worksheet which is created by default | |
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0); | |
// Adding sample values to cells | |
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50); | |
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100); | |
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150); | |
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4); | |
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20); | |
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50); | |
// Adding a chart to the worksheet | |
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Line, 5, 0, 20, 8); | |
// Accessing the instance of the newly added chart | |
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex); | |
// Adding SeriesCollection (chart data source) to the chart ranging from "A1" cell to "B3" | |
chart->GetNISeries()->Add(new String("A1:B3"), true); | |
// Saving the Excel file | |
workbook->Save(outputChartTypeLine); |
Grafico a bolle
Per creare un grafico a bolle, ilTipo di grafico deve essere impostato suChartType_Bolla e poche proprietà extra comeImposta dimensioni bolla & ImpostaXValori devono essere impostati di conseguenza. Dopo aver eseguito il codice seguente, al foglio di lavoro viene aggiunto un grafico a bolle. Si prega di consultare ilfile Excel di output del seguente codice di esempio.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C | |
// Output directory path | |
StringPtr outDir = new String("..\\Data\\02_OutputDirectory\\"); | |
// Path of output excel file | |
StringPtr outputChartTypeBubble = outDir->StringAppend(new String("outputChartTypeBubble.xlsx")); | |
// Create a new workbook | |
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(); | |
// Get first worksheet which is created by default | |
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0); | |
// Fill in data for chart's series | |
// Y Values | |
worksheet->GetICells()->GetObjectByIndex(0, 0)->PutValue((StringPtr)new String("Y Values")); | |
worksheet->GetICells()->GetObjectByIndex(0, 1)->PutValue(2); | |
worksheet->GetICells()->GetObjectByIndex(0, 2)->PutValue(4); | |
worksheet->GetICells()->GetObjectByIndex(0, 3)->PutValue(6); | |
// Bubble Size | |
worksheet->GetICells()->GetObjectByIndex(1, 0)->PutValue((StringPtr)new String("Bubble Size")); | |
worksheet->GetICells()->GetObjectByIndex(1, 1)->PutValue(2); | |
worksheet->GetICells()->GetObjectByIndex(1, 2)->PutValue(3); | |
worksheet->GetICells()->GetObjectByIndex(1, 3)->PutValue(1); | |
// X Values | |
worksheet->GetICells()->GetObjectByIndex(2, 0)->PutValue((StringPtr)new String("X Values")); | |
worksheet->GetICells()->GetObjectByIndex(2, 1)->PutValue(1); | |
worksheet->GetICells()->GetObjectByIndex(2, 2)->PutValue(2); | |
worksheet->GetICells()->GetObjectByIndex(2, 3)->PutValue(3); | |
// Set first column width | |
worksheet->GetICells()->SetColumnWidth(0, 12); | |
// Adding a chart to the worksheet | |
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Bubble, 5, 0, 20, 8); | |
// Accessing the instance of the newly added chart | |
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex); | |
// Adding SeriesCollection (chart data source) to the chart ranging from B1 to D1 | |
chart->GetNISeries()->Add(new String("B1:D1"), true); | |
// Set bubble sizes | |
chart->GetNISeries()->GetObjectByIndex(0)->SetBubbleSizes(new String("B2:D2")); | |
// Set X axis values | |
chart->GetNISeries()->GetObjectByIndex(0)->SetXValues(new String("B3:D3")); | |
// Set Y axis values | |
chart->GetNISeries()->GetObjectByIndex(0)->SetValues(new String("B1:D1")); | |
// Saving the Excel file | |
workbook->Save(outputChartTypeBubble); |
Creazione di grafici personalizzati
Finora, quando abbiamo discusso dei grafici, abbiamo esaminato i grafici standard che hanno le proprie impostazioni di formattazione standard. Definiamo solo l’origine dati, impostiamo alcune proprietà e il grafico viene creato con le impostazioni di formato predefinite. Ma le API Aspose.Cells supportano anche la creazione di grafici personalizzati che consentono agli sviluppatori di creare grafici con le proprie impostazioni di formato. Gli sviluppatori possono creare grafici personalizzati in fase di esecuzione utilizzando Aspose.Cells.
Un grafico è composto da una serie di dati. Durante la creazione di un grafico personalizzato, gli sviluppatori hanno la libertà di utilizzare diversi tipi di grafici per diverse serie di dati.
Il codice di esempio riportato di seguito mostra come creare grafici personalizzati. In questo esempio, utilizzeremo un istogramma per la prima serie di dati e un grafico a linee per la seconda serie. Il risultato è che aggiungiamo un istogramma, combinato con un grafico a linee, al foglio di lavoro. Si prega di consultare ilfile Excel di output del seguente codice di esempio.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-C | |
// Output directory path | |
StringPtr outDir = new String("..\\Data\\02_OutputDirectory\\"); | |
// Path of output excel file | |
StringPtr outputChartTypeCustom = outDir->StringAppend(new String("outputChartTypeCustom.xlsx")); | |
// Create a new workbook | |
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook(); | |
// Get first worksheet which is created by default | |
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0); | |
// Adding sample values to cells | |
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50); | |
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100); | |
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150); | |
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(110); | |
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(260); | |
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(12); | |
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50); | |
worksheet->GetICells()->GetObjectByIndex(new String("B4"))->PutValue(100); | |
// Adding a chart to the worksheet | |
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Column, 5, 0, 20, 8); | |
// Accessing the instance of the newly added chart | |
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex); | |
// Adding SeriesCollection (chart data source) to the chart ranging from A1 to B4 | |
chart->GetNISeries()->Add(new String("A1:B4"), true); | |
// Setting the chart type of 2nd NSeries to display as line chart | |
chart->GetNISeries()->GetObjectByIndex(1)->SetType(Aspose::Cells::Charts::ChartType::ChartType_Line); | |
// Saving the Excel file | |
workbook->Save(outputChartTypeCustom); |