【发布时间】:2014-01-24 06:07:35
【问题描述】:
我正在从 asp.net 填写我的 excel 表,但在 Excel 中我收到错误和不正确的值
错误:
小心,我们在您的工作簿中发现了一个或多个循环引用,这可能会导致您的公式计算不正确。
代码:
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Precise Technology Consultants";
var DataContext = new EmployeeAtdDataContext();
//var EmployeeAtd = DataContext.GetAttendance_Sp();
IEnumerable<GetAtdRecord_SpResult> EmployeeAtd = DataContext.GetAtdRecord_Sp(null).ToList();
var names = (from n in DataContext.EmployeeAtds select n).Distinct();
ViewData["EmplID"] = new SelectList(names, "EmplID", "EmplName");
return View(EmployeeAtd);
}
public ActionResult About()
{
return View();
}
public ActionResult ToExcel()
{
var DataContext = new EmployeeAtdDataContext();
var grid = new GridView();
grid.DataSource = DataContext.GetAtdRecord_Sp(null).ToList();
grid.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=AttendanceSheet.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
grid.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("Index");
}
SQL 查询:
WITH Times AS
( SELECT emp.EmplID,
emp.EmplName,
InTime = MIN(atd.RecTime),
OutTime = MAX(atd.RecTime),
TimeWorked = DATEDIFF(MINUTE, MIN(atd.RecTime), MAX(atd.RecTime)),
OverTime = DATEDIFF(MINUTE, MIN(atd.RecTime), MAX(atd.RecTime)) - 480,
[DateVisited] = atd.RecDate
FROM AtdRecord atd
INNER JOIN HrEmployee emp
ON atd.EmplID = emp.EmplID
GROUP BY emp.EmplID, emp.EmplName, atd.RecDate
HAVING COUNT(atd.RecTime) > 1
)
SELECT t.EmplID,
t.EmplName,
t.InTime,
t.OutTime,
t.DateVisited,
TimeWorked = CONVERT(CHAR(5), DATEADD(MINUTE, t.TimeWorked, 0), 8),
OverTime = CASE WHEN t.OverTime < 0 THEN '-' ELSE '' END +
CONVERT(CHAR(5), DATEADD(MINUTE, ABS(t.OverTime), 0), 8)
FROM Times t
使用 MVC 3 和 linq to sql
检查最后一列,超时,ti 应该显示一个值,例如-07:27 但事实并非如此
【问题讨论】:
-
从 Excel 中对循环引用进行故障排除。它有工具可以做到这一点。使用它们。
-
我做到了,但它暂时删除了这一点,我不希望客户或用户经历这一切,必须有办法解决它
-
这个想法是通过使用 Excel 检查循环引用来识别它。现在您知道哪个单元格是问题所在。然后返回您的代码并在那里解决问题。
-
整个栏目有问题,OVERTIME栏目
-
我猜这个查询引起了问题,在此之前我使用了另一个可以正常工作并且数据传输完美的查询,但是由于我使用了这个查询(它最后有字符连接)它导致了问题
标签: sql asp.net-mvc visual-studio-2010 excel c#-4.0