Usar la Clase GlobalizationSettings para Etiquetas de Subtotal Personalizadas y Otra Etiqueta de Gráfico de Sectores
Escenarios de uso posibles
Las API de Aspose.Cells han expuesto la clase GlobalizationSettings para manejar los escenarios en los que el usuario desea usar etiquetas personalizadas para los Subtotales en una hoja de cálculo. Además, la clase GlobalizationSettings también se puede usar para modificar la etiqueta Otros para el gráfico circular al renderizar la hoja de cálculo o el gráfico.
Introducción a la Clase Configuración Global
La clase GlobalizationSettings actualmente ofrece los siguientes 3 métodos que se pueden anular en una clase personalizada para obtener etiquetas deseadas para los Subtotales o para renderizar texto personalizado para la etiqueta Otros de un gráfico circular.
- GlobalizationSettings.GetTotalName: Obtiene el nombre total de la función.
- GlobalizationSettings.GetGrandTotalName: Obtiene el nombre del total general de la función.
- GlobalizationSettings.GetOtherName: Obtiene el nombre de las etiquetas “Otros” para gráficos circulares.
Etiquetas Personalizadas para Subtotales
La clase GlobalizationSettings se puede usar para personalizar las etiquetas de los Subtotales anulando los métodos GlobalizationSettings.GetTotalName y GlobalizationSettings.GetGrandTotalName como se demuestra a continuación.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Defines a custom class derived from GlobalizationSettings class | |
class CustomSettings : GlobalizationSettings | |
{ | |
// Overrides the GetTotalName method | |
public override string GetTotalName(ConsolidationFunction functionType) | |
{ | |
// Checks the function type used to add the subtotals | |
switch (functionType) | |
{ | |
// Returns custom value based on the function type used to add the subtotals | |
case ConsolidationFunction.Average: | |
return "AVG"; | |
// Handle other cases as per requirement | |
default: | |
return base.GetTotalName(functionType); | |
} | |
} | |
// Overrides the GetGrandTotalName method | |
public override string GetGrandTotalName(ConsolidationFunction functionType) | |
{ | |
// Checks the function type used to add the subtotals | |
switch (functionType) | |
{ | |
// Returns custom value based on the function type used to add the subtotals | |
case ConsolidationFunction.Average: | |
return "GRD AVG"; | |
// Handle other cases as per requirement | |
default: | |
return base.GetGrandTotalName(functionType); | |
} | |
} | |
} |
Para inyectar etiquetas personalizadas, es necesario asignar la propiedad WorkbookSettings.GlobalizationSettings a una instancia de la clase Configuración Personalizada definida anteriormente antes de agregar los Subtotales a la hoja de cálculo.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Loads an existing spreadsheet containing some data | |
Workbook book = new Workbook(dataDir + "sample.xlsx"); | |
// Assigns the GlobalizationSettings property of the WorkbookSettings class to the class created in first step | |
book.Settings.GlobalizationSettings = new CustomSettings(); | |
// Accesses the 1st worksheet from the collection which contains data resides in the cell range A2:B9 | |
Worksheet sheet = book.Worksheets[0]; | |
// Adds Subtotal of type Average to the worksheet | |
sheet.Cells.Subtotal(CellArea.CreateCellArea("A2", "B9"), 0, ConsolidationFunction.Average, new int[] { 1 }); | |
// Calculates Formulas | |
book.CalculateFormula(); | |
// Auto fits all columns | |
sheet.AutoFitColumns(); | |
// Saves the workbook on disc | |
book.Save(dataDir + "output_out.xlsx"); |
Texto Personalizado para Otra Etiqueta del Gráfico Circular
La clase GlobalizationSettings ofrece el método GetOtherName que es útil para darle un valor personalizado a la etiqueta “Otros” de los gráficos circulares. El siguiente fragmento de código define una clase personalizada y anula el método GetOtherName para obtener una etiqueta personalizada basada en el identificador de la cultura del sistema.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Defines a custom class inherited by GlobalizationSettings class | |
class GlobalCustomSettings : ChartGlobalizationSettings | |
{ | |
// Overrides the GetOtherName method | |
public override string GetOtherName() | |
{ | |
// Gets the culture identifier for the current system | |
int lcid = System.Globalization.CultureInfo.CurrentCulture.LCID; | |
switch (lcid) | |
{ | |
// Handles case for English | |
case 1033: | |
return "Other"; | |
// Handles case for French | |
case 1036: | |
return "Autre"; | |
// Handles case for German | |
case 1031: | |
return "Andere"; | |
// Handle other cases | |
default: | |
return base.GetOtherName(); | |
} | |
} | |
} |
El siguiente fragmento de código carga una hoja de cálculo existente que contiene un gráfico circular y renderiza el gráfico a una imagen utilizando la clase Configuración Personalizada creada anteriormente.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Loads an existing spreadsheet containing a pie chart | |
Workbook book = new Workbook(dataDir + "sample.xlsx"); | |
// Assigns the GlobalizationSettings property of the WorkbookSettings class to the class created in first step | |
book.Settings.GlobalizationSettings.ChartSettings = new GlobalCustomSettings(); | |
// Accesses the 1st worksheet from the collection which contains pie chart | |
Worksheet sheet = book.Worksheets[0]; | |
// Accesses the 1st chart from the collection | |
Chart chart = sheet.Charts[0]; | |
// Refreshes the chart | |
chart.Calculate(); | |
// Renders the chart to image | |
chart.ToImage(dataDir + "output_out.png", new ImageOrPrintOptions()); |