我试图从第18列获取值,在上传excel文件后测试为大写,但没有任何成功。
我究竟能如何获得DataTable中的值?
这是我使用excel文件中的值填充DataTable的地方:
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
DataTable dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
我希望18中的所有值都是大写的。
答案 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"。
替换数字索引