Representación de matrices en una sola celda con SmartMarker | Aspose.Cells .NET

Introduction

Los Smart Markers de 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ño y, cuando la plantilla se procesa mediante WorkbookDesigner, los marcadores se sustituyen por valores procedentes del origen de datos proporcionado. De forma predeterminada, 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 independiente, ya sea horizontalmente a lo largo de una fila o verticalmente por una columna. Aunque este comportamiento resulta práctico en muchos escenarios, existen situaciones en las que puede ser preferible representar toda la matriz en una sola celda, con los elementos concatenados y separados por un delimitador elegido por el usuario. Los atributos ArrayAsSingle y ExtraDelimiter, utilizados conjuntamente dentro de una etiqueta Smart Marker, satisfacen exactamente este requisito. Permiten mantener diseños de informes compactos y predecibles, a la vez que se trabaja de forma nativa con orígenes de datos de matrices.

Why This Feature Is Needed

Default Array Spreading Behavior

Cuando un Smart Marker hace referencia a una propiedad de matriz, Aspose.Cells expande la matriz entre varias celdas de forma predeterminada. Por ejemplo, un marcador como &=Product.Tags aplicado a un string[] que contiene cuatro valores colocará cada valor en su propia celda, desplazando el resto del contenido de la plantilla y pudiendo alterar diseños de informes cuidadosamente diseñados.

Use Case Limitations

Existen muchos escenarios prácticos en los que no resulta conveniente el comportamiento de expansión predeterminado:

  • Informes de estilo resumen que requieren un diseño compacto de una fila por registro.
  • Listas de etiquetas, categorías o palabras clave que deben mostrarse como valores separados por comas o barras verticales dentro de una sola celda.
  • Filtros de selección o indicadores de estado que agrupan varios valores en un mismo lugar para mejorar la legibilidad.
  • Procesos posteriores (exportación a CSV, representación a PDF o combinación de correspondencia) que esperan un único valor consolidado por celda en lugar de un rango expandido.
  • Compatibilidad multiplataforma, ya que algunos consumidores no admiten matrices que se extiendan entre varias celdas.

The Gap It Fills

Sin un mecanismo integrado, los desarrolladores tendrían que preprocesar los datos en C# o VB.NET, unir las matrices en cadenas delimitadas antes de enlazarlas al diseñador del libro de trabajo. Esto duplica la lógica, complica los modelos de datos y aumenta el riesgo de errores. Los atributos ArrayAsSingle y ExtraDelimiter eliminan esta solución alternativa al gestionar el formato de forma declarativa dentro del propio Smart Marker.

Feature Benefits

El uso de los atributos ArrayAsSingle y ExtraDelimiter en los Smart Markers ofrece varias ventajas:

  • Inclusión en una sola celda: todos los elementos de la matriz se representan exactamente en una celda, lo que mantiene los diseños compactos y predecibles.
  • Control personalizado del delimitador: permite especificar cualquier cadena separadora, como una coma, un punto y coma, un guion, una barra vertical, una nueva línea o texto personalizado.
  • Formato basado en plantillas: no se requiere código adicional para preprocesar los datos; las reglas de formato se encuentran dentro de la etiqueta Smart Marker.
  • Informes más limpios: los datos de la matriz ya no desplazan el contenido adyacente de la plantilla hacia otras filas o columnas.
  • Tipos de datos versátiles: funciona con cadenas, números, fechas y cualquier otro tipo de datos que pueda unirse mediante un delimitador.
  • Compatibilidad con versiones anteriores: cuando se omiten los atributos, se conserva el comportamiento de expansión original, por lo que las plantillas existentes siguen funcionando sin cambios.

How to Use This Feature

Smart Marker Syntax

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 partes siguientes:

  • &=DataSource.ArrayProperty — Smart Marker estándar que hace referencia a la propiedad de matriz del origen de datos enlazado.
  • arrayasSingle=true — indica al motor que debe representar toda la matriz en una sola celda. Solo el valor true activa el comportamiento de una sola celda.
  • extraDelimiter=", " — define el separador que se coloca entre los elementos de la matriz. El valor es una cadena literal y puede estar vacío, contener un solo carácter o varios caracteres.