【问题标题】:Reading values from Excel with C# converting double to string使用 C# 从 Excel 中读取值,将 double 转换为字符串
【发布时间】:2016-09-08 19:48:26
【问题描述】:

我有下面的代码来遍历 Excel 文件以将其转换为管道分隔文件。

for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
            {
                for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
                {
                    str = str +"|"+ (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2;

                }
                sw.WriteLine(str);
                str = "";

            }

问题是当我得到一个数值时,我得到一个运行时错误“无法将双精度转换为字符串”

知道如何使用 StreamWriter 将双精度值从 Excel 写入文件吗?

【问题讨论】:

  • 尝试使用 .ToString() 而不是强制转换。
  • str = str +"|"+ (range.Cells[rCnt, cCnt] as Excel.Range).Value2.ToString()
  • 使用 Value2.ToString()
  • 检查stackoverflow.com/questions/30231413/…。因为根据该链接,Value2 可能为空

标签: c#


【解决方案1】:
public static string ToStr(object readField)
{
    if ((readField != null))
    {
        if (readField.GetType() != typeof(System.DBNull))
        {
            return Convert.ToString(readField);
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "";
    }
}

str = str +"|"+ ToStr((range.Cells[rCnt, cCnt] as Excel.Range).Value2);

这样使用

【讨论】:

    【解决方案2】:

    将值转换为 string 就像您在示例中所做的那样,不会将该值转换为字符串值。由于您的值是double,正如您所说,您必须使用ToString() 方法来获取该值的字符串表示形式。

    for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
    {
      for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
      {
        str = str +"|"+ (range.Cells[rCnt, cCnt] as Excel.Range).Value2.ToString();
      }
      sw.WriteLine(str);
      str = "";
    } 
    

    Casting vs Converting an object toString, when object really is a string

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 2014-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多