Если ваши столбцы могут перемещаться (как мы знаем, конечные пользователи склонны к переменчивости) или у вас просто разбросано много столбцов дат по электронной таблице, было бы полезно написать что-то более общее.Вот что я только что написал.Он находит положение всех типов DateTime в моем POCO и создает список, который затем использует для установки форматирования столбца.Помните, что таблицы данных основаны на нуле, а Excel - нет.
ws.Cells.LoadFromDataTable(tbl, true);
var dPos = new List<int>();
for (var i = 0; i < tbl.Columns.Count; i++)
if (tbl.Columns[i].DataType.Name.Equals("DateTime"))
dPos.Add(i);
foreach (var pos in dPos)
{
ws.Column(pos+1).Style.Numberformat.Format = "mm/dd/yyyy hh:mm:ss AM/PM";
}
Если вы выполняете более одной таблицы данных, вы, вероятно, захотите преобразовать ее в функцию.
А здесьэто халява ... Я не могу взять кредит на этот код.Он берет список POCO и превращает его в таблицу данных.Это несколько раз облегчало мою жизнь, имея ее в моем «наборе инструментов».Наслаждайтесь.
public DataTable ConvertToDataTable<T>(IList<T> data)
{
var properties =
TypeDescriptor.GetProperties(typeof(T));
var table = new DataTable();
foreach (PropertyDescriptor prop in properties)
table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType);
foreach (T item in data)
{
var row = table.NewRow();
foreach (PropertyDescriptor prop in properties)
row[prop.Name] = prop.GetValue(item) ?? DBNull.Value;
table.Rows.Add(row);
}
return table;
}