当我将模型导出到excel时,我似乎失去了起始零点。我的数据库中的某些值具有ex.'0345'或'0001'的值。当我将它们导出到excel时,excel表格显示为“345”或“1”。如何保持前导零?我的应用程序正在使用MVC 5,我正在使用LINQ语句gv.DataSource
填充db.lookup_client_name.ToList();
我已阅读其他文章,声明将值设置为带'
的字符串(单引号)在开头或在字符串之前添加\t
。如何通过LINQ语句完成此操作?我的代码如下......
public ActionResult ExportToExcel(string Value)
{
var gv = new GridView();
gv.DataSource = db.lookup_client_name.ToList();
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=LookupClientName_" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + ".xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter objStringWriter = new StringWriter();
HtmlTextWriter objHtmlTextWriter = new HtmlTextWriter(objStringWriter);
gv.RenderControl(objHtmlTextWriter);
Response.Output.Write(objStringWriter.ToString());
Response.Flush();
Response.End();
return RedirectToAction("/");
}
答案 0 :(得分:1)
您正在使用“廉价技巧”来创建Excel,您没有创建Excel,您正在创建HTML页面,Excel尝试将其转换为Excel工作表。
说,当Excel将这些值视为数值时,它们会转换为数字,这就是删除前导零的原因。
基本上不可能使用HTML技巧定义单元格格式,因此如果您确实需要保留这些零,则必须创建一个真实的XML文件并指定数据类型或在这些值之前或之后添加一些字符以避免Excel将其检测为数字。
如果你想将char添加到值中,我无法编写确切的代码,因为我没有lookup_client_name
内容结构,但这里有一个例子,它将为您提供一般的想法:< / p>
//this class represents the structure of the data of the lookup_client_name content
public class RowContent
{
public string SomeProperty{ get; set; }
public string PreserveValues{ get; set; }
}
//...
gv.DataSource = db.lookup_client_name.
Select(i => new
{
SomeProperty = i.SomeProperty,
PreserveValues = "'" + i.PreserveValues + "'"
}).ToList();