Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Aspose.Cells поддерживает отображение данных массива в одной ячейке с помощью Smart Markers. Используя атрибут ArrayAsSingle вместе с атрибутом ExtraDelimiter, разработчики могут управлять тем, как элементы массива разделяются внутри одной ячейки, обеспечивая гибкое форматирование отчётов и шаблонов.
Smart Markers в Aspose.Cells — это мощный шаблонный механизм, который позволяет динамически заполнять данные электронной таблицы с помощью выражений маркеров, таких как &=DataSource.Field. Маркер помещается в рабочую книгу дизайнера, и когда шаблон обрабатывается с помощью WorkbookDesigner, маркеры заменяются значениями из предоставленного источника данных.
По умолчанию, когда Smart Marker ссылается на свойство массива (например, &=DataSource.Numbers), механизм разворачивает массив и помещает каждый элемент в отдельную соседнюю ячейку — либо горизонтально по строке, либо вертикально по столбцу. Хотя такое поведение удобно во многих сценариях, существуют ситуации, когда предпочтительнее отобразить весь массив в одной ячейке, объединив элементы и разделив их выбранным разделителем.
Атрибуты ArrayAsSingle и ExtraDelimiter, используемые вместе внутри тега Smart Marker, удовлетворяют именно эту потребность. Они позволяют сохранять компактные и предсказуемые макеты отчётов, продолжая работать с источниками данных массивов нативно.
Когда Smart Marker ссылается на свойство массива, Aspose.Cells по умолчанию разворачивает массив по нескольким ячейкам. Например, маркер вида &=Product.Tags для string[], содержащего четыре значения, поместит каждое значение в отдельную ячейку, смещая другое содержимое шаблона в стороны и потенциально нарушая тщательно спроектированные макеты отчётов.
Существует множество практических сценариев, в которых поведение разворачивания по умолчанию нежелательно:
Без встроенного механизма разработчикам пришлось бы предварительно обрабатывать данные в C# или VB.NET — объединяя массивы в строки с разделителями перед их привязкой к дизайнеру рабочей книги. Это дублирует логику, усложняет модели данных и увеличивает вероятность ошибок. Атрибуты ArrayAsSingle и ExtraDelimiter устраняют этот обходной путь, выполняя форматирование декларативно внутри самого Smart Marker.
Использование атрибутов ArrayAsSingle и ExtraDelimiter в ваших Smart Markers даёт ряд преимуществ:
Атрибуты ArrayAsSingle и ExtraDelimiter передаются в виде пар «ключ-значение» внутри круглых скобок стандартного Smart Marker. Общий синтаксис:
&=DataSource.ArrayProperty(arrayasSingle=true, extraDelimiter=", ")
Маркер состоит из следующих частей:
&=DataSource.ArrayProperty — стандартный Smart Marker, ссылающийся на свойство массива в привязанном источнике данных.arrayasSingle=true — указывает механизму отобразить весь массив в одной ячейке. Только значение true запускает поведение «одна ячейка».extraDelimiter=", " — определяет разделитель, помещаемый между элементами массива. Значение является строковым литералом; оно может быть пустым, одним символом или строкой из нескольких символов.Атрибут extraDelimiter принимает любой строковый литерал, включая многосимвольные разделители, пользовательский текст или escape-последовательности, такие как \n для вывода с переводом строки. Если массив пуст, результирующая ячейка остаётся пустой.
Следующий рабочий процесс описывает, как отобразить массив в одной ячейке с помощью Smart Markers.
string[], int[] или любой другой поддерживаемый тип массива.Workbook, добавьте строку заголовка и поместите ячейку Smart Marker, которая ссылается на свойство массива с атрибутами arrayasSingle и extraDelimiter.WorkbookDesigner, прикрепите к нему рабочую книгу дизайнера и привяжите свой источник данных с помощью метода SetDataSource.WorkbookDesigner.Process(), чтобы развернуть Smart Markers и заполнить рабочую книгу реальными данными.using System;
using Aspose.Cells;
class Program
{
public class Product
{
public string[] Tags { get; set; }
}
public static void Main()
{
Product product = new Product
{
Tags = new string[] { "C#", "Aspose", "SmartMarker", "Excel" }
};
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Cells["A1"].PutValue("Tags");
worksheet.Cells["A2"].PutValue("&=Product.Tags(arrayasSingle=true, extraDelimiter=\", \")");
WorkbookDesigner designer = new WorkbookDesigner();
designer.Workbook = workbook;
designer.SetDataSource("Product", product);
designer.Process();
workbook.Save("output_arraySingle.xlsx");
}
}
public class Student
{
public int[] Scores { get; set; }
}
public class Program
{
public static void Main()
{
var student = new Student
{
Scores = new int[] { 95, 88, 76, 100, 67 }
};
var workbook = new Workbook();
var worksheet = workbook.Worksheets[0];
worksheet.Cells["A1"].PutValue("Scores");
worksheet.Cells["A2"].PutValue(string.Join(" - ", student.Scores));
workbook.Save("output_numericArray.xlsx");
}
}
using System;
using Aspose.Cells;
public class Program
{
public static void Main()
{
var order = new Order
{
Items = new string[] { "Apple", "Banana", "Cherry", "Date" }
};
var workbook = new Workbook();
var sheet = workbook.Worksheets[0];
var cells = sheet.Cells;
// Раздел 1: Смарт-маркер по умолчанию — значения распределяются горизонтально по ячейкам
cells["A1"].PutValue("Default Spreading Behavior:");
cells["A2"].PutValue("&=Order.Items");
// Раздел 2: Новое отображение в одной ячейке с использованием arrayasSingle и extraDelimiter
cells["A4"].PutValue("Single Cell Rendering (arrayasSingle=true):");
cells["A5"].PutValue("&=Order.Items(arrayasSingle=true, extraDelimiter=\"; \")");
// Привязка источника данных и обработка смарт-маркеров
var designer = new WorkbookDesigner(workbook);
designer.SetDataSource("Order", order);
designer.Process();
// Сохранение полученной книги
workbook.Save("output_comparison.xlsx");
}
}
public class Order
{
public string[] Items { get; set; }
}
Учитывайте следующие моменты при работе с атрибутами ArrayAsSingle и ExtraDelimiter:
extraDelimiter обрабатывается как строковый литерал; экранируйте любые специальные символы, которые ваш процессор шаблонов может интерпретировать.arrayasSingle принимает логическое значение (true / false). Только true запускает поведение «одна ячейка»; любое другое значение возвращает поведение разворачивания по умолчанию.DataSet и DataTable, где столбец можно разбить на массивы.\n или Environment.NewLine в качестве значения разделителя.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.