2016-07-08 90 views
0

控制器显示Excel表格中的数据。 我需要控制器每隔1小时检查一次excel表格,还应该更新视图。 这是我的控制器代码:每隔5分钟刷新一次en asp.net mvc

string path3 = "D:/Project/Sesame Incident Dump_20160317.xls"; 

Excel.Application application3 = new Excel.Application(); 
Excel.Workbook workbook3 = application3.Workbooks.Open(path3); 
Excel.Worksheet worksheet3 = workbook3.ActiveSheet; 
Excel.Range range3 = worksheet3.UsedRange; 
List<SesameIncident> ListSesameIncident = new List<SesameIncident>(); 
for (int row = 2; row <= range3.Rows.Count; row++) 
{ 
    SesameIncident S = new SesameIncident(); 
    S.Number = (((Excel.Range)range3.Cells[row, 1]).Text); 
    S.AssignedTo = (((Excel.Range)range3.Cells[row, 5]).Text); 
    S.Opened = (((Excel.Range)range3.Cells[row, 6]).Text); 
    S.Status = (((Excel.Range)range3.Cells[row, 7]).Text); 
    S.Priority = (((Excel.Range)range3.Cells[row, 10]).Text); 
    S.AssignedGroup = (((Excel.Range)range3.Cells[row, 12]).Text); 

    ListSesameIncident.Add(S); 

} 

ViewBag.ListSesameIncidents = ListSesameIncident 
     .Where(x => x.Status == "Pending Customer").Take(13); 
+0

控制器将不得不通过你的文件中的每个动作调用它去,除非某种缓存是使用 –

+0

或数据可以存储在数据库中,我没有得到你的完整实现想法 –

+0

控制器必须通过Excel表 –

回答

1

您可以在控制器

HttpContext.Response.Headers.Add("refresh", "300; url=" + Url.Action("Index")); 
+0

那我需要的时间呢? “300 !!!”或者我必须使用“1000”一秒 –

+0

我之前添加的方法,我想执行每1小时或内部? –

+0

这是300秒,5分钟 – Kahbazi

0
<script type="text/javascript"> 
    setTimeout(function() { 
     location.reload(); 
    }, 5 * 60 * 1000); 
</script> 

参考Refresh Page for interval using js

您可以刷新页面,这样

的控制器,你可能需要一个表中的数据库是指,当最后更新,供参考,你将不得不永久存储参考数据,这是我的意见,我从来没有这样的要求

+1

我可以使用睡眠? –

0

要在没有用户交互的情况下定期运行某些内容(即没有启动它的请求),Web应用程序就不是您想要的。相反,您正在寻找一个Windows服务或者一个简单的控制台应用程序,该应用程序计划由主机系统的调度软件(Windows任务计划程序,cron等)定期运行。请参阅How to execute a method in Asp.net MVC for every 24 hours

我宁愿考虑可能会节省每次读取xls的缓存。见How to cache data in a MVC application

0
  • 一个Header添加到您的HttpContext.Response更新客户端每隔X秒是相当简单的。只需使用 meta http-equiv 将值refresh放在您页面的标题中。

    此解决方案是clean易于阅读并且您将不会依赖于简单的JavaScript循环。

  • 要每隔X更新一次Excel表格,您需要另一个应用程序以及一个 计时器。你可以做任何你想做的事情,如果你使用.net,一个简单的控制台应用程序将完成这项工作。如果你正在使用Azure中你可以只使用一个工作者角色,这正是一个工人 讲述的是,P