现正开发一个小系统,点击一个按钮就会自动执行一个存储过程,根据条件不同抽出若干段数据,并将这些数据分别存到同一个Excel的不同Sheet里面。
通过:
cnt.Open(); da2.Fill(dt1); cnt.Close();
System.Data.DataTable []dt = new DataTable[1];
dt[0]=dt1;
已经能够实现将抽出的第一段数据放到 DataTable dt1 并转到 dt[0],然后输出到Excel;
但因为执行存储过程一下子输出多段数据,只能使用
DataSet,cnt.Open(); da2.Fill(ds1); cnt.Close();
System.Data.DataTable []dt = new DataTable[1];
dt[0]=ds1.Tables[0];
但运行到 dt[0]=ds1.Tables[0]; 就会出错
请问该如何解决这个问题呢?
通过:
cnt.Open(); da2.Fill(dt1); cnt.Close();
System.Data.DataTable []dt = new DataTable[1];
dt[0]=dt1;
已经能够实现将抽出的第一段数据放到 DataTable dt1 并转到 dt[0],然后输出到Excel;
但因为执行存储过程一下子输出多段数据,只能使用
DataSet,cnt.Open(); da2.Fill(ds1); cnt.Close();
System.Data.DataTable []dt = new DataTable[1];
dt[0]=ds1.Tables[0];
但运行到 dt[0]=ds1.Tables[0]; 就会出错
请问该如何解决这个问题呢?
你这样申明一个DATATABLE的数组好奇怪
你可以先判断
ds1.Tables.Count看看有DataSet里面有没有数据
ds.tables[0]也就是一个datatable来的了
再说你只给一个datatable赋值,为何要定义一个数组?
定义数组,是因为执行存储过程输出多段数据,除了 dt[0]=ds1.Tables[0]; 还有dt[1]=ds1.Tables[1]; 等等
我用的 try catch ,当执行到 dt[0]=ds1.Tables[0]; 就跳到错误处理了
所以也没什么错误提示
你要哪段直接就ds1.Tables["索引或者表名"];可以了!
{
MessageBox.Show(ex.message);
}
看看提示什么错误
这样好像不行,系统调试说,System.Exception中没有message的定义