Умный импорт и размещение данных с использованием умных маркеров

Введение

Умные маркеры используются для того, чтобы Aspose.Cells узнавал, какую информацию разместить в дизайнерском электронном листе Microsoft Excel. Умные маркеры позволяют создавать шаблоны, содержащие только определенную информацию и форматирование.

Дизайнерский электронный таблица и умные маркеры

Дизайнерские электронные таблицы - стандартные файлы Excel, которые содержат визуальное форматирование, формулы и умные маркеры. Они могут содержать умные маркеры, ссылки на один или несколько источников данных, такие как информация из проекта и информация о связанных контактах. Умные маркеры записываются в ячейки, в которых нужна информация.

Все умные маркеры начинаются с &=. Примером маркера данных является &=Party.FullName. Если результат маркера данных содержит более одного элемента, например, полную строку, то следующие строки автоматически сдвигаются вниз, чтобы освободить место для новой информации. Таким образом, промежуточные и итоговые итоги могут быть размещены на строке, следующей сразу после маркера данных, чтобы делать вычисления на основе вставленных данных. Для вычислений по вставленным строкам используйте динамические формулы.

Умные маркеры состоят из частей источник данных и название поля для большинства информации. Специальная информация также может передаваться с помощью переменных и массивов переменных. Переменные всегда заполняют только одну ячейку, в то время как массивы переменных могут заполнять несколько. Используйте только один маркер данных на ячейку. Неиспользуемые умные маркеры удаляются.

Умный маркер также может содержать параметры. Параметры позволяют изменить способ представления информации. Они добавляются в конец умного маркера в круглых скобках в виде списка, разделенного запятыми.

Параметры умного маркера

&=ИсточникДанных.ИмяПоля &=[Источник Данных].[Имя Поля] &=$ИмяПеременной &=$МассивПеременных &==ДинамическаяФормула &=&=ПовторитьДинамическуюФормулу

Параметры

Допустимы следующие параметры:

  • noadd - Не добавлять дополнительные строки для помещения данных.
  • skip:n - Пропустить n количество строк для каждой строки данных.
  • ascending:n или descending:n - Сортировать данные в умных маркерах. Если n равно 1, то столбец является первым ключом сортировки. Данные сортируются после обработки источника данных. Например: &=Таблица1.Поле3(ascending:1).
  • horizontal - Записывать данные слева направо, а не сверху вниз.
  • numeric - Преобразовать текст в число, если это возможно.
  • shift - Сдвиг вниз или вправо, создание дополнительных строк или столбцов для данных. Параметр сдвига работает так же, как в Microsoft Excel. Например, в Microsoft Excel, когда вы выделяете диапазон ячеек, щелкаете правой кнопкой мыши и выбираете Вставка и указываете сдвинуть ячейки вниз, сдвинуть ячейки вправо и другие параметры. В сокращенной форме параметр shift выполняет ту же функцию для вертикального/нормального (сверху вниз) или горизонтального (слева направо) умных маркеров.
  • copystyle - Скопировать стиль базовой ячейки во все ячейки этого столбца.

Параметры noadd и skip могут быть объединены для вставки данных на чередующиеся строки. Так как шаблон обрабатывается сверху вниз, вы должны добавить noadd на первой строке, чтобы избежать вставки лишних строк перед чередующейся строкой.

Если у вас есть несколько параметров, разделите их запятыми, но без пробела: параметрА,параметрB,параметрC

На следующих скриншотах показано, как вставить данные на каждую вторую строку.

Файл шаблона Файл вывода
todo:image_alt_text todo:image_alt_text

Динамические формулы

Динамические формулы позволяют вставлять формулы Excel в ячейки, даже когда формула ссылается на строки, которые будут вставлены во время процесса экспорта. Динамические формулы могут повторяться для каждой вставленной строки или использовать только ячейку, где размещен маркер данных.

Динамические формулы позволяют использовать следующие дополнительные параметры:

  • r - Номер текущей строки.
  • 2, -1 - Смещение к текущему номеру строки.

Например:

 &=&=B{-1}/C{-1}~(skip:1)

В маркере динамической формулы “-1” обозначает смещение к текущей строке в столбцах B и C соответственно, которые будут установлены для операции деления, параметр пропуска - одна строка. Более того, мы должны указать следующий символ:

 "~"

как разделительный символ для применения дополнительных параметров в динамических формулах.

Следующие скриншоты иллюстрируют повторяющуюся динамическую формулу и результат на листе Excel.

Файл шаблона Файл вывода
todo:image_alt_text todo:image_alt_text
Ячейка “C1” содержит формулу = A1*B1, ячейка “C2” содержит = A2*B2 и ячейка “C3” содержит = A3*B3.

Очень легко обрабатывать умные маркеры. Приведенный ниже пример кода показывает, как использовать динамические формулы в умных маркерах. Мы загружаем файл шаблона и создаем тестовые данные, обрабатываем маркеры для заполнения данных в ячейках по маркерам.

Использование переменных массивов

Приведенный ниже пример кода показывает, как использовать переменные массивы в умных маркерах. Мы размещаем маркер переменного массива в ячейке A1 первого листа рабочей книги динамически, который содержит строку значений, которые мы устанавливаем для маркера, обрабатываем маркеры для заполнения данных в ячейках по маркерам. Наконец, мы сохраняем файл Excel.

Группировка данных

В некоторых отчетах Excel может потребоваться разбить данные на группы для удобства их чтения и анализа. Одной из основных целей разделения данных на группы является выполнение расчетов (выполнение сводных операций) для каждой группы записей.

Умные маркеры Aspose.Cells позволяют группировать данные по полям и размещать строки итогов между наборами данных или группами данных. Например, если группировать данные по Customers.CustomerID, можно добавить строку итогов при каждом изменении группы.

Параметры

Ниже приведены некоторые параметры умного маркера, используемые для группировки данных.

group:normal/merge/repeat

Мы поддерживаем три типа групп, из которых вы можете выбрать.

  • обычный - Значение поля(ей) группировки не повторяется для соответствующих записей в столбце; вместо этого они печатаются один раз для каждой группы данных.
  • объединение - То же поведение, что и для параметра normal, за исключением того, что он объединяет ячейки в поле(ях) группировки для каждого набора групп.
  • повтор - Значение поля(ей) группировки повторяется для соответствующих записей.

Например: &=Customers.CustomerID(group:merge)

skip

Пропускает указанное количество строк после каждой группы.

Например, &=Employees.EmployeeID(group:normal,skip:1)

subtotalN

Выполняет сводную операцию для указанных данных поля, связанных с полем группировки. N представляет собой числа от 1 до 11, которые указывают функцию, используемую при расчете промежуточных итогов в списке данных. (1=AVERAGE, 2=COUNT, 3=COUNTA, 4=MAX, 5=MIN,…9=SUM и т.д.) См. Справочник subtotal в справке Microsoft Excel для получения дополнительной информации.

Фактический формат указан как: subtotalN:Ref, где Ref относится к столбцу группировки.

Например,

  • &=Products.Units(subtotal9:Products.ProductID) указывает функцию итогов для поля Units относительно поля ProductID в таблице Products.
  • &=Tabx.Col3(subtotal9:Tabx.Col1) указывает функцию итогов для поля Col3 с группировкой по Col1 в таблице Tabx.
  • &=Table1.ColumnD(subtotal9:Table1.ColumnA&Table1.ColumnB) указывает функцию итогов для поля ColumnD группируется по ColumnA и ColumnB в таблице Table1.

В этом примере показано некоторые из параметров группировки в действии. Он использует базу данных Microsoft Access Northwind.mdb и извлекает данные из таблицы с именем “Order Details”. Мы создаем файл дизайнера с именем SmartMarker_Designer.xls в Microsoft Excel и размещаем умные маркеры в различные ячейки на листах. Маркеры обрабатываются для заполнения листов. Данные размещаются и организуются по полю группы.

В файле дизайнера два листа. На первом мы размещаем умные маркеры с параметрами группировки, как показано на скриншоте ниже. Три умных маркера (с параметрами группировки) размещены: &=[Order Details].OrderID(group:merge,skip:1), &=[Order Details].Quantity(итого9:Order Details.OrderID), и &=[Order Details].UnitPrice(итого9:Order Details.OrderID) помещаются в A5, B5 и C5 соответственно.

Первый лист в файле SmartMarker_Designer.xls с полностью настроенными умными маркерами
todo:image_alt_text
На втором листе дизайнера мы размещаем еще несколько умных маркеров, как показано на рисунке ниже. Мы размещаем следующие умные маркеры:
&=[Order Details].OrderID(group:normal),
&=[Order Details].Quantity,
&=[Order Details].UnitPrice,
&=&=B(r)*C(r), и
&=итого9:Order Details.OrderID в A5, B5, C5, D5 и C6 соответственно.
Второй лист файла SmartMarker_Designer.xls, отображающий смешанные умные маркеры.
todo:image_alt_text
Вот исходный код, используемый в примере.

Использование анонимных типов или пользовательских объектов

Aspose.Cells также поддерживает анонимные типы или пользовательские объекты в умных маркерах. Приведенный ниже пример показывает, как это работает. Для импорта данных из динамических объектов с использованием умных маркеров посетите следующую статью:

Импорт из динамического объекта в качестве источника данных

Изображение маркеров

Умные маркеры Aspose.Cells также поддерживают изображения. Этот раздел покажет вам, как вставлять изображения с помощью умных маркеров.

Параметры изображения

Умные маркеры для управления изображениями.

  • Изображение:FitToCell - Автоматически подгонять изображение под высоту строки и ширину столбца.
  • Изображение:МасштабN - Масштабировать высоту и ширину до N процентов.
  • Picture:Width:Nin&Height:Nin - Вывести изображение высотой N дюймов и шириной N дюймов. Также можно указать позиции слева и сверху (в пунктах).

Вот исходный код, используемый в примере.

Использование вложенных объектов

Aspose.Cells поддерживает вложенные объекты в умных маркерах, вложенные объекты должны быть простыми. Мы используем простой файл шаблона. Смотрите дизайнерскую электронную таблицу, содержащую некоторые вложенные умные маркеры.

Первый лист файла SM_NestedObjects.xlsx, показывающий вложенные умные маркеры.
todo:image_alt_text
Приведенный ниже пример показывает, как это работает.

Использование обобщенного списка в качестве вложенного объекта

Aspose.Cells теперь также поддерживает использование обобщенного списка в качестве вложенного объекта. Пожалуйста, проверьте скриншот выходного файла Excel, сгенерированного следующим кодом. Как видно на скриншоте, объект ‘Преподаватель’ содержит несколько вложенных объектов ‘Студент’.

todo:image_alt_text

Использование свойства HTML умных маркеров

The following sample code explains the use of HTML property of the Smart Markers. When it will be processed, it will show “World” in “Hello World” as bold because of HTML tag.

Нет построчно.

Текущий метод обработки по умолчанию - обрабатывать умные маркеры построчно. Но иногда умные маркеры одной и той же таблицы данных нужно обрабатывать вместе, независимо от того, находятся ли они в одной строке или нет. В этом случае необходимо указать именованный диапазон “_CellsSmartMarkers” и указать, что WorkbookDesigner.LineByLine равно false перед вызовом обработки.

|todo:image_alt_text|

Получение уведомлений во время слияния данных с умными маркерами

Иногда может потребоваться получить уведомления о ссылке на ячейку или о обработке конкретного умного маркера до завершения. Это можно сделать с помощью свойства WorkbookDesigner.CallBack и ISmartMarkerCallBack.

Продвинутые темы