Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
ArrayAsSingle вместе с атрибутом ExtraDelimiter, разработчики могут управлять разделением элементов массива внутри одной ячейки, обеспечивая гибкое форматирование для отчётов и шаблонов.
Smart Markers в Aspose.Cells — это мощная функция на основе шаблонов, которая позволяет динамически заполнять данные электронных таблиц с помощью выражений маркеров, таких как &=DataSource.Field. Маркер размещается в рабочей книге дизайнера, и когда шаблон обрабатывается WorkbookDesigner, маркеры заменяются значениями из предоставленного источника данных.
По умолчанию, когда Smart Marker ссылается на свойство массива (например, &=DataSource.Numbers), механизм разворачивает массив и помещает каждый элемент в соседнюю ячейку — либо горизонтально по строке, либо вертикально по столбцу. Хотя такое поведение удобно во многих сценариях, бывают ситуации, когда предпочтительнее отобразить весь массив в одной ячейке с объединёнными элементами, разделёнными выбранным разделителем.
Атрибуты ArrayAsSingle и ExtraDelimiter, используемые вместе внутри тега Smart Marker, решают именно эту задачу. Они позволяют сохранять компактные и предсказуемые макеты отчётов, продолжая работать нативно с источниками данных в виде массивов.
Когда Smart Marker ссылается на свойство массива, Aspose.Cells по умолчанию разворачивает массив по нескольким ячейкам. Например, маркер вида &=Product.Tags для string[], содержащего четыре значения, поместит каждое значение в отдельную ячейку, сдвигая остальное содержимое шаблона и потенциально нарушая тщательно продуманные макеты отчётов.
Существует множество практических сценариев, в которых поведение разворачивания по умолчанию нежелательно:
Без встроенного механизма разработчики были бы вынуждены предварительно обрабатывать данные в Java — объединять массивы в строки с разделителями перед привязкой их к дизайнеру рабочей книги. Это дублирует логику, усложняет модели данных и увеличивает вероятность ошибок. Атрибуты 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 и заполнения рабочей книги реальными данными.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;
}
}
Учитывайте следующие моменты при работе с атрибутами ArrayAsSingle и ExtraDelimiter:
extraDelimiter обрабатывается как строковый литерал; экранируйте любые специальные символы, которые ваш процессор шаблонов может интерпретировать.arrayasSingle принимает логическое значение (true / false). Только true запускает поведение «одна ячейка»; любое другое значение приводит к поведению разворачивания по умолчанию.DataSet и DataTable, где столбец можно разбить на массивы.\n или System.lineSeparator() в качестве значения разделителя.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.