Используйте ICellsDataTableDataSource для конструктора рабочих книг

Введение

Создание расширенных электронных таблиц с автоматизированной интеграцией данных может стать переломным моментом, особенно в бизнес-приложениях. В этом руководстве мы рассмотрим, как использоватьICellsDataTableDataSourceдля дизайнера рабочих книг в Aspose.Cells для .NET. Мы проведем вас через создание простого, понятного человеку решения для динамической загрузки пользовательских данных в файл Excel. Итак, если вы работаете со списками клиентов, данными о продажах или чем-то подобным, это руководство для вас!

Предпосылки

Для начала убедитесь, что у вас есть следующее:

  • Библиотека Aspose.Cells for .NET – ее можно загрузить с сайтаздесь или получите бесплатную пробную версию.
  • Среда разработки .NET – Visual Studio – отличный выбор.
  • Базовые знания C# – знакомство с классами и обработкой данных поможет вам в дальнейшем изучении. Прежде чем продолжить, убедитесь, что в вашей среде разработки установлены необходимые пакеты.

Импортные пакеты

Для эффективного использования Aspose.Cells вам необходимо импортировать необходимые пакеты. Ниже приведен краткий справочник по требуемым пространствам имен:

using Aspose.Cells.Rendering;
using Aspose.Cells.WebExtensions;
using System;
using System.Collections;

Шаг 1: Определите класс данных клиента

Для начала создайте простойCustomer класс. Этот класс будет содержать основные данные о клиенте, такие какFullName иAddressДумайте об этом как о способе определения «формы» ваших данных.

public class Customer
{
    public Customer(string aFullName, string anAddress)
    {
        FullName = aFullName;
        Address = anAddress;
    }
    public string FullName { get; set; }
    public string Address { get; set; }
}

Шаг 2: Настройка класса списка клиентов

Далее, определитеCustomerList класс, который расширяетArrayList . Этот настраиваемый список будет содержать экземплярыCustomer и разрешить индексированный доступ к каждой записи.

public class CustomerList : ArrayList
{
    public new Customer this[int index]
    {
        get { return (Customer)base[index]; }
        set { base[index] = value; }
    }
}

На этом этапе мы преобразуем наши данные в формат, который Aspose.Cells может распознать и обработать.

Шаг 3: Создание класса источника данных о клиентах

Вот тут-то и начинается самое интересное. Мы создадимCustomerDataSource класс реализующийICellsDataTable чтобы сделать наши данные совместимыми с конструктором рабочих книг Aspose.Cells.

public class CustomerDataSource : ICellsDataTable
{
    internal string[] m_Columns;
    internal ICollection m_DataSource;
    private Hashtable m_PropHash;
    private IEnumerator m_IEnumerator;
    private PropertyInfo[] m_Properties;
    public CustomerDataSource(CustomerList customers)
    {
        this.m_DataSource = customers;
        this.m_Properties = customers[0].GetType().GetProperties();
        this.m_Columns = new string[this.m_Properties.Length];
        this.m_PropHash = new Hashtable(this.m_Properties.Length);
        for (int i = 0; i < m_Properties.Length; i++)
        {
            this.m_Columns[i] = m_Properties[i].Name;
            this.m_PropHash.Add(m_Properties[i].Name, m_Properties[i]);
        }
        this.m_IEnumerator = this.m_DataSource.GetEnumerator();
    }
    public string[] Columns => this.m_Columns;
    public int Count => this.m_DataSource.Count;
    public void BeforeFirst()
    {
        this.m_IEnumerator = this.m_DataSource.GetEnumerator();
    }
    public object this[int index] => this.m_Properties[index].GetValue(this.m_IEnumerator.Current, null);
    public object this[string columnName] => ((PropertyInfo)this.m_PropHash[columnName]).GetValue(this.m_IEnumerator.Current, null);
    public bool Next()
    {
        if (this.m_IEnumerator == null)
            return false;
        return this.m_IEnumerator.MoveNext();
    }
}

Этот обычайCustomerDataSource класс позволяет Aspose.Cells интерпретировать каждыйCustomer объект в виде строки в файле Excel.

Шаг 4: Инициализация данных клиента

Теперь давайте добавим несколько клиентов в наш список. Здесь мы загружаем данные для записи в рабочую книгу. Не стесняйтесь добавлять больше записей по мере необходимости.

CustomerList customers = new CustomerList();
customers.Add(new Customer("Thomas Hardy", "120 Hanover Sq., London"));
customers.Add(new Customer("Paolo Accorti", "Via Monte Bianco 34, Torino"));

В этом примере мы работаем с небольшим набором данных. Однако вы можете легко расширить этот список, загрузив данные из базы данных или других источников.

Шаг 5: Загрузите рабочую книгу

Теперь давайте откроем существующую книгу Excel, содержащую необходимые Smart Markers. Эта книга будет служить нашим шаблоном, а Aspose.Cells динамически заменит Smart Markers данными клиентов.

string sourceDir = "Your Document Directory";
Workbook workbook = new Workbook(sourceDir + "SmartMarker1.xlsx");

Убедитесь, что"SmartMarker1.xlsx" содержит заполнители, такие как&=Customer.FullName и&=Customer.Address где необходимо заполнить данные.

Шаг 6: Настройка конструктора рабочих книг

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

WorkbookDesigner designer = new WorkbookDesigner(workbook);
designer.SetDataSource("Customer", new CustomerDataSource(customers));

TheSetDataSource метод связывает нашCustomerDataSource к Smart Markers в рабочей книге. Каждый маркер, помеченный&=Customer в Excel теперь будут заменены соответствующими данными о клиентах.

Шаг 7: Обработка и сохранение рабочей книги

Наконец, давайте обработаем рабочую книгу, чтобы заполнить данные и сохранить результаты.

string outputDir = "Your Document Directory";
designer.Process();
workbook.Save(outputDir + "dest.xlsx");

Этот код запускает обработку Smart Marker, заменяет все заполнители данными и сохраняет результат какdest.xlsx.

Заключение

Поздравляем! Вы успешно внедрилиICellsDataTableDataSource для дизайнера рабочих книг, использующего Aspose.Cells для .NET. Этот подход идеально подходит для автоматизации заполнения данных в электронных таблицах, особенно при работе с динамическими данными, такими как списки клиентов или инвентаризации продуктов. С этими навыками вы на верном пути к созданию приложений, управляемых данными, которые делают отчетность на основе Excel легкой!

Часто задаваемые вопросы

Что такоеICellsDataTable in Aspose.Cells?

Это интерфейс, позволяющий связывать пользовательские источники данных с интеллектуальными маркерами Aspose.Cells для динамического заполнения данных.

Как настроить данные в шаблоне рабочей книги?

Заполнители, называемые умными маркерами, например&=Customer.FullName, используются. Эти маркеры заменяются реальными данными в процессе обработки.

Является ли Aspose.Cells для .NET бесплатным?

Aspose.Cells предлагает бесплатную пробную версию, но для полного доступа требуется платная лицензия. Проверьте ихбесплатная пробная версия иликупить параметры.

Могу ли я динамически добавлять больше данных о клиентах?

Конечно! Просто заполнитеCustomerListс дополнительными записями перед запуском программы.

Где я могу получить помощь, если я застрял?

У Aspose естьфорум поддержки где пользователи могут задавать вопросы и получать помощь от сообщества и команды Aspose.