SmartMarker Single Cell Array Rendering | Aspose.Cells .NET

Introduction

Smart Markers i Aspose.Cells är en kraftfull, mallbaserad funktion som låter dig dynamiskt fylla i kalkylbladsdata med hjälp av marköruttryck som &=DataSource.Field. Markören placeras i en designarbetsbok, och när mallen bearbetas av WorkbookDesigner ersätts markörerna med värden från den angivna datakällan. Som standard, när en Smart Marker refererar till en matrisegenskap (till exempel &=DataSource.Numbers), expanderar motorn matrisen och placerar varje element i en separat intilliggande cell — antingen horisontellt över en rad eller vertikalt ner i en kolumn. Även om detta beteende är bekvämt i många scenarier finns det situationer där du skulle föredra att rendera hela matrisen i en enda cell, med elementen sammanfogade och separerade med en avgränsare efter eget val. Attributen ArrayAsSingle och ExtraDelimiter, som används tillsammans inom en Smart Marker-tagg, uppfyller just detta krav. De låter dig hålla rapportlayouter kompakta och förutsägbara samtidigt som du arbetar med matriser som datakällor.

Why This Feature Is Needed

Default Array Spreading Behavior

När en Smart Marker refererar till en matrisegenskap expanderar Aspose.Cells matrisen över flera celler som standard. Till exempel kommer en markör som &=Product.Tags mot en string[] som innehåller fyra värden att placera varje värde i sin egen cell, vilket skjuter annat mallinnehåll utåt och potentiellt bryter noggrant utformade rapportlayouter.

Use Case Limitations

Det finns många praktiska scenarier där standardspridningsbeteendet är oönskat:

  • Sammanfattningsrapporter som behöver en kompakt layout med en rad per post.
  • Tagg-, etikett- eller nyckelordslistor som behöver visas som kommaseparerade eller pipe-separerade värden inom en enda cell.
  • Filterchips eller statusindikatorer som grupperar flera värden på ett ställe för läsbarhet.
  • Nedströms pipelines (CSV-export, PDF-rendering, dokumentkoppling) som förväntar sig ett enda konsoliderat värde per cell snarare än ett expanderat intervall.
  • Plattformskompatibilitet, där vissa konsumenter inte kan tolerera matriser som sprider sig över flera celler.

The Gap It Fills

Utan en inbyggd mekanism skulle utvecklare tvingas förbearbeta data i C# eller VB.NET — sammanfoga matriser till avgränsade strängar innan de binder dem till arbetsboksdesignern. Detta duplicerar logik, komplicerar datamodeller och ökar risken för fel. Attributen ArrayAsSingle och ExtraDelimiter eliminerar denna lösning genom att hantera formateringen deklarativt inuti Smart Marker-taggen.

Feature Benefits

Att använda attributen ArrayAsSingle och ExtraDelimiter i dina Smart Markers ger flera fördelar:

  • Inneslutning i en cell: Alla matriselement renderas i exakt en cell, vilket håller layouter kompakta och förutsägbara.
  • Anpassad avgränsarkontroll: Ange valfri separatorsträng — komma, semikolon, bindestreck, pipe, nyrad eller annan anpassad text.
  • Malldriven formatering: Ingen ytterligare kod krävs för att förbearbeta data; formateringsregler finns inuti Smart Marker-taggen.
  • Renare rapporter: Matrisdata skjuter inte längre ut intilliggande mallinnehåll till andra rader eller kolumner.
  • Mångsidiga datatyper: Fungerar med strängar, tal, datum och alla andra datatyper som kan sammanfogas med en avgränsare.
  • Bakåtkompatibilitet: När attributen utelämnas bevaras det ursprungliga spridningsbeteendet, så befintliga mallar fortsätter att fungera oförändrat.

How to Use This Feature

Smart Marker Syntax

Attributen ArrayAsSingle och ExtraDelimiter skickas som nyckel-värde-par inom parenteserna i en vanlig Smart Marker. Den allmänna syntaxen är:

&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")

Markören består av följande delar:

  • &=DataSource.ArrayProperty — standard-Smart Marker som refererar till matrisegenskapen på den bundna datakällan.
  • arrayasSingle=true — instruerar motorn att rendera hela matrisen i en enda cell. Endast värdet true utlöser encellsbeteendet.
  • extraDelimiter=", " — definierar avgränsaren som placeras mellan matriselement. Värdet är en strängliteral; det kan vara tomt, ett enskilt tecken eller en flerteckensträng.