如何将Excel中的列放入DataTable

时间:2015-07-07 13:07:32

标签: c# excel

我试图从第18列获取值,在上传excel文件后测试为大写,但没有任何成功。

enter image description here

我究竟能如何获得DataTable中的值?

这是我使用excel文件中的值填充DataTable的地方:

 using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
        {
            DataTable dataTable = new DataTable();
            adapter.Fill(dataTable);
            return dataTable;
        }

我希望18中的所有值都是大写的。

2 个答案:

答案 0 :(得分:5)

遍历所有行,使第18列数据为UpperCase:

foreach (DataRow row in dataTable.Rows)
{
    row["Test"] = row["Test"].ToString().ToUpper();
}

答案 1 :(得分:3)

您可以为DataTable的RowChanged事件添加事件处理程序。

using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
    DataTable dataTable = new DataTable();
    dataTable.RowChanged += changedRow;
    adapter.Fill(dataTable);
    return dataTable;
}

void changedRow(object sender, DataRowChangeEventArgs e)
{
     if(e.Action == DataRowAction.Add)
         e.Row[17] = e.Row[17].ToString().ToUpper();
}

也应该计划一些关于空值的检查。

当然这会避免对数据进行第二次循环,因为在Fill调用中加载数据时会调用此事件。

请注意,您应该使用RowChanged事件,因为RowChanging事件不允许修改行值。此外,我已经为列使用了固定索引,因为我不知道您的连接字符串是否包含激活Excel工作表第一行中列名的配置。但是,如果您的列名称确实命名为" 18"那么你可以用字符串" 18"。

替换数字索引