日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java合并多个表格为一个_多个DataTable的合并成一个新表

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java合并多个表格为一个_多个DataTable的合并成一个新表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時我們知道了兩個DataTable1和DataTable2,我們希望將它們合并為一個新的DataTable(下面的例子中命名為了newDataTable),這就分為兩種情況:DataTable1和DataTable2結構相同、DataTable1和DataTable2結構不同,下面分別介紹怎么進行合并。

一、DataTable1和DataTable2結構相同的情況,結構相同我們只需要把兩者的數據羅列到一塊就可以了

首先初始化相同結構DataTable(測試用的)

void InitDataTable1(DataTable dt)

{

dt.Columns.Add("student_no");

dt.Columns.Add("student_name");

dt.Rows.Add("001", "June");

dt.Rows.Add("002", "zhang");

dt.Rows.Add("003", "jun");

}

void InitDataTable2(DataTable dt)

{

dt.Columns.Add("student_no");

dt.Columns.Add("student_name");

dt.Rows.Add("111", "ABC");

dt.Rows.Add("222", "XYZ");

dt.Rows.Add("333", "OPQ");

}

合并方法1:用Rows.Add方法

DataTable newDataTable = DataTable1.Clone();

object[] obj = new object[newDataTable.Columns.Count];

//添加DataTable1的數據 for (int i = 0; i < DataTable1.Rows.Count; i++)

{

DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);

newDataTable.Rows.Add(obj);

}

//添加DataTable2的數據 for (int i = 0; i < DataTable2.Rows.Count; i++)

{

DataTable2.Rows[i].ItemArray.CopyTo(obj, 0);

newDataTable.Rows.Add(obj);

}

合并方法2:用DataTable.ImportRow方法

//拷貝DataTable1的結構和數據 DataTable newDataTable = DataTable1.Copy();

//添加DataTable2的數據 foreach (DataRow dr in DataTable2.Rows)

{

newDataTable.ImportRow(dr);

}

其實添加DataTable1的結構和數據有兩種方法

//克隆DataTable1的結構 DataTable newDataTable = DataTable1.Clone();

object[] obj = new object[newDataTable.Columns.Count];

//添加DataTable1的數據 for (int i = 0; i < DataTable1.Rows.Count; i++)

{

DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);

newDataTable.Rows.Add(obj);

}

或者直接用自帶的Copy方法? DataTable newDataTable = DataTable1.Copy();

二、DataTable1和DataTable2結構不同相同的情況,我們可以先向新表中添加DataTable1的數據,然后再向每行的后面添加添加DataTable2的數據,注意兩者的行數不一定相同。

首先初始化相同結構DataTable(測試用的)

void InitDataTable1(DataTable dt)

{

dt.Columns.Add("student_no1");

dt.Columns.Add("student_name1");

dt.Rows.Add("001", "June");

dt.Rows.Add("002", "zhang");

//dt.Rows.Add("003", "jun"); }

void InitDataTable2(DataTable dt)

{

dt.Columns.Add("student_no2");

dt.Columns.Add("student_name2");

dt.Rows.Add("111", "ABC");

dt.Rows.Add("222", "XYZ");

dt.Rows.Add("222", "ASD");

}

方法(1)先添加第一個表,再添加第二個表

/// ///將兩個列不同(結構不同)的DataTable合并成一個新的DataTable/// /// 表1/// 表2/// 合并后新的表名/// 合并后的新表 private DataTable UniteDataTable(DataTable DataTable1, DataTable DataTable2, string DTName)

{

//克隆DataTable1的結構 DataTable newDataTable = DataTable1.Clone();

for (int i = 0; i < DataTable2.Columns.Count; i++)

{

//再向新表中加入DataTable2的列結構 newDataTable.Columns.Add(DataTable2.Columns[i].ColumnName);

}

object[] obj = new object[newDataTable.Columns.Count];

//添加DataTable1的數據 for (int i = 0; i < DataTable1.Rows.Count; i++)

{

DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);

newDataTable.Rows.Add(obj);

}

if (DataTable1.Rows.Count >= DataTable2.Rows.Count)

{

for (int i = 0; i < DataTable2.Rows.Count; i++)

{

for (int j = 0; j < DataTable2.Columns.Count; j++)

{

newDataTable.Rows[i][j + DataTable1.Columns.Count] = DataTable2.Rows[i][j].ToString();

}

}

}

else

{

DataRow dr3;

//向新表中添加多出的幾行 for (int i = 0; i < DataTable2.Rows.Count - DataTable1.Rows.Count; i++)

{

dr3 = newDataTable.NewRow();

newDataTable.Rows.Add(dr3);

}

for (int i = 0; i < DataTable2.Rows.Count; i++)

{

for (int j = 0; j < DataTable2.Columns.Count; j++)

{

newDataTable.Rows[i][j + DataTable1.Columns.Count] = DataTable2.Rows[i][j].ToString();

}

}

}

newDataTable.TableName = DTName; //設置DT的名字 return newDataTable;

方法(2)先添加行數多的表。其實我們也可以先判斷哪個表的行數多,就先添加哪個表,然后再添加行少的表就可以了。

/// ///將兩個列不同(結構不同)的DataTable合并成一個新的DataTable/// /// 表1/// 表2/// 合并后新的表名/// 合并后的新表 private DataTable UniteDataTable2(DataTable DataTable1, DataTable DataTable2, string DTName)

{

DataTable newDataTable = new DataTable();

if (DataTable1.Rows.Count > DataTable2.Rows.Count)

{

newDataTable = FillData(DataTable1, DataTable2);

}

else

{

newDataTable = FillData(DataTable2, DataTable1);

}

newDataTable.TableName = DTName; //設置DT的名字 return newDataTable;

}

private DataTable FillData(DataTable dt1, DataTable dt2)

{

//克隆DataTable1的結構 DataTable newDataTable = dt1.Clone();

for (int i = 0; i < dt2.Columns.Count; i++)

{

//再向新表中加入DataTable2的列結構 newDataTable.Columns.Add(dt2.Columns[i].ColumnName);

}

object[] obj = new object[newDataTable.Columns.Count];

//添加DataTable1的數據 for (int i = 0; i < dt1.Rows.Count; i++)

{

dt1.Rows[i].ItemArray.CopyTo(obj, 0);

newDataTable.Rows.Add(obj);

}

for (int i = 0; i < dt2.Rows.Count; i++)

{

for (int j = 0; j < dt2.Columns.Count; j++)

{

newDataTable.Rows[i][j + dt1.Columns.Count] = dt2.Rows[i][j].ToString();

}

}

return newDataTable;

}

總結

以上是生活随笔為你收集整理的java合并多个表格为一个_多个DataTable的合并成一个新表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。