123456789101112131415161718192021222324252627282930313233343536373839 |
- using System.Reflection;
- using ClosedXML.Excel;
- namespace ExcelORM;
- // Borrowed from https://github.com/ClosedXML/ClosedXML/blob/develop/ClosedXML/Excel/XLCellValue.cs#L361
- public static class TypeExtensions
- {
- private static object? ToObject(this XLCellValue value)
- {
- return value.Type switch
- {
- XLDataType.Blank => null,
- XLDataType.Boolean => value.GetBoolean(),
- XLDataType.Number => value.GetNumber(),
- XLDataType.Text => value.GetText(),
- XLDataType.Error => value.GetError(),
- XLDataType.DateTime => value.GetDateTime(),
- XLDataType.TimeSpan => value.GetTimeSpan(),
- _ => throw new InvalidCastException()
- };
- }
- public static void SetPropertyValue<T>(this T currentObject, PropertyInfo property, XLCellValue value)
- {
- var valueToSet = value.ToObject();
- if (valueToSet == null) return;
- try
- {
- property.SetValue(currentObject, valueToSet);
- }
- catch
- {
- valueToSet = value.ToString();
- property.SetValue(currentObject, valueToSet);
- }
- }
- }
|