экспортируйте IEnumerable <T> в Excel

кто-либо знает как или некоторая библиотека использовать для этого?

10
задан Omu 26 July 2010 в 13:54
поделиться

2 ответа

3
ответ дан 3 December 2019 в 20:02
поделиться

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

public class IEnumerableToDataTable
{
    public  static DataTable CreateDataTableForPropertiesOfType<T>()
    {
        DataTable dt = new DataTable();
        PropertyInfo[] piT = typeof(T).GetProperties();

        foreach (PropertyInfo pi in piT)
        {
            Type propertyType = null;
            if (pi.PropertyType.IsGenericType)
            {
                propertyType = pi.PropertyType.GetGenericArguments()[0];
            }
            else
            {
                propertyType = pi.PropertyType;
            }
            DataColumn dc = new DataColumn(pi.Name, propertyType);

            if (pi.CanRead)
            {
                dt.Columns.Add(dc);
            }
        }

        return dt;
    }

    public static DataTable ToDataTable<T>(IEnumerable<T> items)
    {
        var table = CreateDataTableForPropertiesOfType<T>();
        PropertyInfo[] piT = typeof(T).GetProperties();

        foreach (var item in items)
        {
            var dr = table.NewRow();

            for (int property = 0; property < table.Columns.Count; property++)
            {
                if (piT[property].CanRead)
                {
                    dr[property] = piT[property].GetValue(item, null);
                }
            }

            table.Rows.Add(dr);
        }
        return table;
    }
}

Итак, вы можете написать следующее, чтобы преобразовать ваши данные в datatable:

IEnumerable<Thing> values = GetMyIEnumerableValues();

var tableOfData = IEnumerableToDataTable.ToDataTable(values);

Как только они появятся, довольно просто записать их в CSV-файл , или любой другой формат по вашему выбору, так как вся «сложная» работа по отражению для извлечения данных из IEnumerable уже выполнена.

15
ответ дан 3 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: