Импорт данных из Excel в MVC - PullRequest
0 голосов
/ 16 декабря 2018

Я пытался извлечь данные из Excel в SQL через MVC, но у меня возникла проблема с полем даты и времени, поскольку оно выдает ошибку ниже:

Не удается неявно преобразовать тип 'string' в 'System.DateTime?'


X

мой код в моем контроллере:

public static string ConvertDateTime(string data)
    {
        DateTime dateTime;
        return DateTime.TryParseExact(data, "mm/dd/yy hh:mm"
            , System.Globalization.CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)
            ? dateTime.ToString("mm/dd/yy hh:mm") : "N/A";
    }

    [HttpPost]
    public ActionResult MultipleUpload(HttpPostedFileBase Excelfile)
    {
                string path = Server.MapPath("~/Content/" + Excelfile.FileName);
                if (System.IO.File.Exists(path))
                    System.IO.File.Delete(path);
                Excelfile.SaveAs(path);
                //
                Excel.Application application = new Excel.Application();
                Excel.Workbook workbook = application.Workbooks.Open(path);
                Excel.Worksheet worksheet = workbook.ActiveSheet;
                Excel.Range range = worksheet.UsedRange;
                List<goldenfpcmap> map = new List<goldenfpcmap>();
                for (int row = 1; row <= range.Rows.Count; row++)
                {
                    goldenfpcmap m = new goldenfpcmap();
                    m.InputDate = ConvertDateTime(((Excel.Range)range.Cells[row, 7]).Value.ToString());
                    db.goldenfpcmaps.Add(m);
                    db.SaveChanges();
                }
                return RedirectToAction("Action");
    }

1 Ответ

0 голосов
/ 16 декабря 2018

Для начала DateTime шаблон формата "мм" представляет минуты, а месяцы - "ММ".Так что вместо «мм / дд / гг чч: мм» вы, вероятно, имеете в виду «мм / дд / гг чч: мм».

Во-вторых, в сообщаемой вами ошибке указывается, что свойство или поле m.InputDate ожидает DateTime?, но вместо этого получает строку.Я бы порекомендовал изменить ваш метод конвертации.

public static DateTime? ConvertDateTime(string data)
{
    DateTime dateTime;
    if (DateTime.TryParseExact(data, "MM/dd/yy hh:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime))
        return dateTime;
    else
        return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...