asp.net-mvc - 将数据从 Excel 导入 MVC
问题描述
我尝试通过 MVC 将数据从 Excel 检索到 SQL,但日期时间字段存在问题,因为它出现以下错误:
无法将类型“字符串”隐式转换为“System.DateTime?”
我在控制器中的代码:
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");
}
解决方案
对于初学者DateTime
格式模式“mm”代表分钟,而月份是“MM”。因此,您的意思可能不是“mm/dd/yy hh:mm”,而是“MM/dd/yy hh:mm”。
其次,您报告的错误表明该属性或字段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;
}
推荐阅读
- java - Closeable 扩展 AutoCloseable
- javascript - RxJS:即使一个或多个失败,如何等待几个 observable
- nltk - 如何匹配 NLTK 特征语法中的数值?
- sql-server - SQL Server 2008 R2 - 快照复制
- asp.net - 访问 SharePoint API 以将数据插入到 Asp.Net 项目中的列表
- python - Pytest 日志记录忽略 pytest.ini 中的选项
- c++ - 如何使 QTabWidget 透明?
- android - 对于unity3d中画布的屏幕尺寸缩放,当用于更大的屏幕时,我在Ui中的精灵是像素化的
- php - Laravel:如何从多个表中查询数据?
- swift - 在 VSTS 上的云托管 Mac 上的 Xcode 中构建错误