![](/img/trans.png)
[英]Datagridview C# Column with Date error format when exporting to excel
[英]C# exporting csv with incorrect column format (Excel)
我正在将充满数据的gridview导出到CSV文件,其中一列包含最长18位,非浮点的优惠券号。 该数字需要显示为Excel中
csv文件
的完整数字。 当我在Excel中打开csv文件时 ,例如720137994699937608,其他显示为:
然后,当我调整列的大小或将列类型更改为数字时,优惠券号将显示为:
您会注意到excel将优惠券号更改为浮点数,现在优惠券号中的数字最后已替换为零。 这不好。
这是我的导出代码:
protected void btnExport_Click(object sender, EventArgs e)
{
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition",
"attachment;filename=Reports All Prizes.csv");
Response.Charset = "";
Response.ContentType = "csv";
StringBuilder sb = new StringBuilder();
sb.Append("FirstName" + ',');
sb.Append("LastName" + ',');
sb.Append("CouponNumber" + ',');
string[] splitColumns = sb.ToString().Split(new Char[] { ',' });
//append new line
sb.Append("\r\n");
for (int i = 0; i < gvReportsAllPrizes.Rows.Count; i++)
{
foreach (string column in splitColumns)
{
if (column == "FirstName")
{
//capatilize first letter.
string first = Globals.ReplaceHTML(gvReportsAllPrizes.Rows[i].Cells[1].Text.Trim());
if (string.IsNullOrEmpty(first))
{
first = "";
}
if (!string.IsNullOrEmpty(first))
{
first = first.ToLower();//convert to lowercase before uppercasing the first letter.
first = "\"" + first.First().ToString().ToUpper() + String.Join("", first.Skip(1)) +
"\"";
}
sb.Append(first + ',');
}
else if (column == "LastName")
{
//capatilize first letter.
string last = Globals.ReplaceHTML(gvReportsAllPrizes.Rows[i].Cells[2].Text.Trim());
if (string.IsNullOrEmpty(last))
{
last = "";
}
if (!string.IsNullOrEmpty(last))
{
last = last.ToLower();//convert to lowercase before uppercasing the first letter.
last = "\"" + last.First().ToString().ToUpper() + String.Join("", last.Skip(1)) +
"\"";
}
sb.Append(last + ',');
}
else if (column == "CouponNumber")
{
string cn = Globals.ReplaceHTML(gvReportsAllPrizes.Rows[i].Cells[8].Text.Trim());
if (string.IsNullOrEmpty(cn))
{
cn = "";
}
if (!string.IsNullOrEmpty(cn))
{
sb.Append("\"" + cn + "\"" + ',');
}
else
{
sb.Append(cn + ',');
}
}
}
//append new line
sb.Append("\r\n");
}
Response.Output.Write(sb.ToString());
Response.Flush();
Response.End();
}
public static string ReplaceHTML(string strInput)
{
strInput = strInput.Replace(""", "\"" + "\"");
strInput = strInput.Replace("&", "&");
strInput = strInput.Replace(" ", string.Empty);
strInput = strInput.Replace("''", "'");
return strInput.Replace("'", "'").Trim();
}
原始txt文件csv:
FirstName,LastName,CouponNumber,“ first”,“ last”,“ 720137994699937608”
您可以像这样包装每个值:
"=""DATA HERE"""
例如:
Column1,Column2
"=""1231231231231323121321""","=""123"""
显然,它在csv文件中不是很漂亮,但是可以根据需要将其导入excel。
如果您使用的是CSV文件,则无法执行任何操作。 正如其他人提到的,这是一个Excel格式问题。 如果您要管理文档的格式,建议使用某种Excel库。
Excel的最大精度为15位数字 。 将它们显示为字符串会让人厌恶吗?
如果不需要CSV文件,则可以直接将gridview导出到excel。 但是,如果仍然需要csv文件,则在excel列中显示长数字的最简单方法是在将csv导入excel之前将该列转换为文本。
这是步骤。
打开Excel。 单击打开,找到文件。 打开后,将显示以下屏幕。
选择定界,然后单击下一步。 选择其他添加(,),然后单击下一步。
这是最终结果:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.