【问题标题】:Issue with decimal value 0.00 after exporting to Excel using c#使用 c# 导出到 Excel 后出现十进制值 0.00 的问题
【发布时间】: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


【解决方案1】:

如果您右键单击要导出到的单元格并选择“格式化单元格...”它会提供什么数字类型?如果它是“通用”,那么为什么没有小数位是有道理的。如果您选择“数字”,那么您可以定义将显示多少个小数位。这是你要找的吗?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
相关资源
最近更新 更多