从DataTable

时间:2016-11-24 09:40:37

标签: c# excel datatable

我有一个DataTable,我从excel表中填充。 excel中的列名称包含两个单词之间的空格,即

  1. 产品类型
  2. 序列号
  3. 我正努力实现

    1. PRODUCTTYPE或PRODUCT_TYPE
    2. SERIALNUMBER或SERIAL_NUMBER
    3. DataTable列是从excel动态生成的。我试图删除单词之间的空格,但我似乎无法让它工作。我当前用于删除空格的代码看起来像

      foreach (DataRow dr in cloned.Rows)
      {
          foreach (DataColumn col in cloned.Columns)
          {
              dr[col] = dr[col].ToString().Replace(" ", "");
          }
      }
      
      是的,有人可以告诉我,我出错了。

4 个答案:

答案 0 :(得分:3)

如果要修改列,则无需循环行:

foreach(DataColumn c in cloned.Columns)
    c.ColumnName = String.Join("_", c.ColumnName.Split());

如果要删除空格,请使用String.Join("", c.ColumnName.Split())

答案 1 :(得分:2)

首先,您不需要循环DataTable

的行
foreach (DataColumn col in cloned.Columns)
{
    col.ColumnName = col.ColumnName.Replace(" ","");
}

答案 2 :(得分:0)

我认为更好地放置数据列的检查过程,当列类型为字符串然后删除空格

 if (col.DataType == typeof(System.String))
  {
  dr[col] = dr[col].ToString().Replace(" ", "");
  }

答案 3 :(得分:0)

您也可以在foreach循环中使用以下方法。

public static string TrimAllWithSplitAndJoin(string str)
{
    return string.Concat(str.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries));
}


static Regex whitespace = new Regex(@"\s+", RegexOptions.Compiled);

public static string TrimAllWithRegex(string str)
{
    return whitespace.Replace(str, "");
}


foreach (DataColumn col in cloned.Columns)
{
    col.ColumnName = TrimAllWithSplitAndJoin(col.ColumnName);
}