我正在使用SQL 2014,Visual Studio2013。我有以下代码是较大脚本任务的一部分:
//Load DataTable1 with Source Excel Sheet Data
OleDbCommand oconn = new OleDbCommand("select * from [" + sheetname + "]", cnn);
OleDbDataAdapter adp = new OleDbDataAdapter(oconn);
DataTable dt = new DataTable();
adp.Fill(dt);
我接下来要做的是从datatable1中选择目标数量的列,然后填充另一个datatable。像这样:
//Load another DataTable with Data from datatable1
OleDbCommand oconn2 = new OleDbCommand("select [column1], [column2] from datatable1", cnn);
OleDbDataAdapter adp2 = new OleDbDataAdapter(oconn2);
DataTable dt2 = new DataTable();
adp2.Fill(dt2);
这可能吗?其背后的原因很复杂,但我不知道有其他解决方法。我的源文件是Excel。因此,需要将数据放入数据表中。然后,需要修改列名称。然后可以使用修改后的列名创建表。但是首先,由于我不确定是否要修改源文件,因此需要将数据按原样放入数据表中。
谢谢。
答案 0 :(得分:0)
使用要添加到其中的列的数据类型和新名称定义第二个DataTable
。然后,您可以使用DataTable
方法,通过使用初始Add
中列的顺序位置来填充此对象,如下所示。
DataTable dt2 = new DataTable();
dt2.Columns.Add("NewColumnName1", typeof(int));
dt2.Columns.Add("NewColumnName2", typeof(string));
//in this example dt is the original DataTable
foreach (DataRow dr in dt.Rows)
{
//add only necessary columns by their
//ordinal position in source DataTable
dt2.Rows.Add(dr[1], dr[0]);
}