将Excel中所有Sheet的数据导入一个DataSet

# region 将Excel中所有Sheet的数据导入一个DataSet
/** <summary>
/// 将Excel中所有Sheet的数据导入一个DataSet
/// </summary>
/// <returns></returns>
public static DataSet CreateDataSource(string strPath)
{ 
 try
 { 
 bool m_DelRow = false; 
 string strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " + strPath + "; Extended Properties = 'Excel 8.0;HDR = Yes;IMEX = 1'";
 OleDbConnection conn = new OleDbConnection(strConn);
 conn.Open(); 
 System.Data.DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"Table"}); 
//=======删除文件中的打印区域============================================================ 
 for(int k = 0;k < dtSheetName.Rows.Count;k++)
 {
 if(dtSheetName.Rows[k]["TABLE_NAME"].ToString().EndsWith("Print_Area"))
 {
 dtSheetName.Rows[k].Delete();
 }
 
 }
 dtSheetName.AcceptChanges();
//======================================================================== 
 string strSql = string.Empty;
 DataSet myDataSet = new DataSet();
 //=========================================================================== 
 for(int i = 0 ;i < dtSheetName.Rows.Count;i++)
 {//用多个表来填充myDataSet
 strSql = "Select * from [" + dtSheetName.Rows[i]["TABLE_NAME"].ToString() + "]"; 
 OleDbDataAdapter myCommand = new OleDbDataAdapter(strSql,conn); 
 myCommand.Fill(myDataSet,dtSheetName.Rows[i]["TABLE_NAME"].ToString());
 
 }
//==========删除空表========================================= 
// for(int h =0;h < myDataSet.Tables.Count;h++)
// {
// if(myDataSet.Tables[h].Rows.Count == 0)
// {
// myDataSet.Tables[h].
// }
// }
 //删除文件中的全为空的行
 for(int j = 0;j < myDataSet.Tables.Count;j++)
 {
 for(int i = 0;i < myDataSet.Tables[j].Rows.Count;i++)
 {
 for(int k = 0; k < myDataSet.Tables[j].Columns.Count;k++)
 {
 if(myDataSet.Tables[j].Rows[i][k].ToString() != string.Empty)
 {
 m_DelRow = true;
 } 
 }
 if(!m_DelRow)
 {
 myDataSet.Tables[j].Rows[i].Delete(); 
 }
 m_DelRow = false;
 }
 }
 myDataSet.AcceptChanges();
 //================================================================================
 m_DelRow = false; 
 return myDataSet;
 }
 catch(Exception err)
 {
 Console.WriteLine(err.Message + System.Environment.NewLine + err.StackTrace); 
 return null ;
 }
}
#endregion

转自:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值