Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells admite la renderización de datos de matriz en una sola celda mediante Smart Markers. Al usar el atributo ArrayAsSingle junto con el atributo ExtraDelimiter, los desarrolladores pueden controlar cómo se separan los elementos de la matriz dentro de una sola celda, lo que proporciona un formato flexible para informes y plantillas.
Los Smart Markers en Aspose.Cells son una potente función basada en plantillas que permite rellenar dinámicamente datos de hojas de cálculo mediante expresiones de marcadores como &=DataSource.Field. El marcador se coloca en un libro de trabajo de diseñador, y cuando la plantilla es procesada por el WorkbookDesigner, los marcadores se reemplazan con valores del origen de datos proporcionado.
Por defecto, cuando un Smart Marker hace referencia a una propiedad de matriz (por ejemplo, &=DataSource.Numbers), el motor expande la matriz y coloca cada elemento en una celda adyacente, ya sea horizontalmente en una fila o verticalmente en una columna. Si bien este comportamiento es conveniente en muchos escenarios, existen situaciones en las que preferiría renderizar toda la matriz en una sola celda, con los elementos concatenados y separados por un delimitador de su elección.
Los atributos ArrayAsSingle y ExtraDelimiter, utilizados juntos dentro de una etiqueta de Smart Marker, abordan exactamente este requisito. Le permiten mantener los diseños de informes compactos y predecibles mientras siguen trabajando de forma nativa con orígenes de datos de matriz.
Cuando un Smart Marker hace referencia a una propiedad de matriz, Aspose.Cells expande la matriz a través de varias celdas por defecto. Por ejemplo, un marcador como &=Product.Tags contra un string[] que contiene cuatro valores colocará cada valor en su propia celda, empujando otros contenidos de la plantilla hacia afuera y posiblemente rompiendo los diseños de informes cuidadosamente elaborados.
Existen muchos escenarios prácticos donde el comportamiento de expansión por defecto es indeseable:
Sin un mecanismo integrado, los desarrolladores se verían obligados a preprocesar los datos en Java, uniendo matrices en cadenas delimitadas antes de vincularlas al diseñador del libro de trabajo. Esto duplica la lógica, complica los modelos de datos y aumenta la posibilidad de errores. Los atributos ArrayAsSingle y ExtraDelimiter eliminan esta solución alternativa al manejar el formato de forma declarativa dentro del propio Smart Marker.
Usar los atributos ArrayAsSingle y ExtraDelimiter en sus Smart Markers ofrece varias ventajas:
Los atributos ArrayAsSingle y ExtraDelimiter se pasan como pares clave-valor dentro de los paréntesis de un Smart Marker estándar. La sintaxis general es:
&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")
El marcador se compone de las siguientes partes:
&=DataSource.ArrayProperty — el Smart Marker estándar que hace referencia a la propiedad de matriz en el origen de datos vinculado.arrayasSingle=true — indica al motor que renderice toda la matriz en una sola celda. Solo el valor true activa el comportamiento de celda única.extraDelimiter=", " — define el separador colocado entre los elementos de la matriz. El valor es un literal de cadena; puede estar vacío, ser un solo carácter o una cadena de varios caracteres.El atributo extraDelimiter acepta cualquier literal de cadena, incluidos delimitadores de varios caracteres, texto personalizado o secuencias de escape como \n para una salida separada por nueva línea. Si la matriz está vacía, la celda resultante se deja en blanco.
El siguiente flujo de trabajo describe cómo renderizar una matriz en una sola celda usando Smart Markers.
String[], int[] o cualquier otro tipo de matriz admitido.Workbook, agregue una fila de encabezado y coloque una celda de Smart Marker que haga referencia a la propiedad de matriz con los atributos arrayasSingle y extraDelimiter.WorkbookDesigner, adjunte el libro de trabajo de diseñador a este y vincule su origen de datos usando el método setDataSource.WorkbookDesigner.process() para expandir los Smart Markers y rellenar el libro de trabajo con datos reales.import com.aspose.cells.*;
class Product {
public String[] Tags;
}
public class CodeRunner {
public static void main(String[] args) throws Exception {
Product product = new Product();
product.Tags = new String[] { "C#", "Aspose", "SmartMarker", "Excel" };
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Tags");
worksheet.getCells().get("A2").putValue("&=Product.Tags(arrayasSingle=true, extraDelimiter=\", \")");
WorkbookDesigner designer = new WorkbookDesigner();
designer.setWorkbook(workbook);
designer.setDataSource("Product", product);
designer.process();
workbook.save("output_arraySingle.xlsx");
}
}
import com.aspose.cells.*;
class Student
{
public int[] Scores;
}
public class CodeRunner
{
public static void main(String[] args) throws Exception
{
Student student = new Student();
student.Scores = new int[] { 95, 88, 76, 100, 67 };
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.getWorksheets().get(0);
worksheet.getCells().get("A1").putValue("Scores");
StringBuilder joined = new StringBuilder();
for (int i = 0; i < student.Scores.length; i++)
{
if (i > 0) joined.append(" - ");
joined.append(student.Scores[i]);
}
worksheet.getCells().get("A2").putValue(joined.toString());
workbook.save("output_numericArray.xlsx");
}
}
class Order
{
private String[] items;
public String[] getItems()
{
return items;
}
public void setItems(String[] items)
{
this.items = items;
}
}
Tenga en cuenta los siguientes puntos cuando trabaje con los atributos ArrayAsSingle y ExtraDelimiter:
extraDelimiter se trata como un literal de cadena; escape cualquier carácter especial que su procesador de plantillas pudiera interpretar.arrayasSingle acepta un valor booleano (true / false). Solo true activa el comportamiento de celda única; cualquier otro valor vuelve al comportamiento de expansión por defecto.DataSet y DataTable donde una columna se puede dividir en matrices.\n o System.lineSeparator() como valor del delimitador.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.