【发布时间】:2012-12-07 21:21:28
【问题描述】:
我有一些数据导出到 Excel。在下面的代码中,当 rowText = 4.0321 时,它在 excel 中显示相同的 4.0321。但是如果 rowText = 0.00 它在 excel 报告中只显示 0。我需要它是 0.00。任何帮助将不胜感激..
var rowText = base.GetColumnText(column, columnValue);
_writer.Write(string.Format("\"{0}\"", rowText.Replace("\"", "\"\"")));
_writer.Write(i < columns.Count - 1 ? "," : Environment.NewLine);
protected string GetColumnText(ViewColumn column, object value)
{
string text = string.Empty;
if (value != null && value != DBNull.Value)
{
var dataFormatString = column.DataFormatString;
if (string.IsNullOrEmpty(dataFormatString))
{
switch (column.ColumnType)
{
case ViewColumnType.Date:
{
dataFormatString = "{0:MM/dd/yyyy}";
}
break;
case ViewColumnType.Numeric:
{
dataFormatString = "{0:N2}";
}
break;
case ViewColumnType.Account:
{
string AccountNo = value.ToString().Trim();
if (AccountNo.Length == 8)
return string.Concat(AccountNo.Substring(0, 4), "-", AccountNo.Substring(4));
}
break;
}
}
text = !string.IsNullOrEmpty(dataFormatString) ? string.Format(dataFormatString, value) : value.ToString();
}
return text;
}
【问题讨论】:
-
可能与你的问题无关,但是当
GetColumnText不是虚拟的时候,为什么你在var rowText = base.GetColumnText(column, columnValue);中使用base.呢?是否被其他同名方法隐藏?否则我会使用this.而不是base.。你有没有调试看看会发生什么?我很确定string.Format("{0:N2}", 0)产生"0.00"(如果"."是当前文化中的小数分隔符)。 -
是 rowText = string.Format("{0:N2}", 0) 产生“0.00”。所以现在我有 rowText = "0.00" 但是当我使用 _writer.Write(string.Format("\"{0}\"", rowText.Replace("\"", "\"\""))) 导出时; 我在 excel 文件中只看到 0
标签: c# string export-to-csv