读取Excel数据到DataTable

mac2022-06-30  77

 

代码 /// <summary> /// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据 /// </summary> /// <param name="FilePath"> 文件存储路径 </param> /// <param name="WorkSheetName"> 工作簿名称 </param> /// <returns> 如果争取找到了数据会返回一个完整的Table,否则返回异常 </returns> public DataTable GetExcelData( string astrFileName) { string strSheetName = GetExcelWorkSheets(astrFileName)[ 0 ].ToString(); return GetExcelData(astrFileName, strSheetName); }

 

代码 /// <summary> /// 返回指定文件所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空 /// </summary> /// <param name="strFilePath"> 要获取的Excel </param> /// <returns> 如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空 </returns> public ArrayList GetExcelWorkSheets( string strFilePath) { ArrayList alTables = new ArrayList(); OleDbConnection odn = new OleDbConnection(GetExcelConnection(strFilePath)); odn.Open(); DataTable dt = new DataTable(); dt = odn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null ); if (dt == null ) { throw new Exception( " 无法获取指定Excel的架构。 " ); } foreach (DataRow dr in dt.Rows) { string tempName = dr[ " Table_Name " ].ToString(); int iDolarIndex = tempName.IndexOf( ' $ ' ); if (iDolarIndex > 0 ) { tempName = tempName.Substring( 0 , iDolarIndex); } // 修正了Excel2003中某些工作薄名称为汉字的表无法正确识别的BUG。 if (tempName[ 0 ] == ' \ '' ) { if (tempName[tempName.Length - 1 ] == ' \ '' ) { tempName = tempName.Substring( 1 , tempName.Length - 2 ); } else { tempName = tempName.Substring( 1 , tempName.Length - 1 ); } } if ( ! alTables.Contains(tempName)) { alTables.Add(tempName); } } odn.Close(); if (alTables.Count == 0 ) { return null ; } return alTables; }

 

代码 /// <summary> /// 获取指定路径、指定工作簿名称的Excel数据 /// </summary> /// <param name="FilePath"> 文件存储路径 </param> /// <param name="WorkSheetName"> 工作簿名称 </param> /// <returns> 如果争取找到了数据会返回一个完整的Table,否则返回异常 </returns> public DataTable GetExcelData( string FilePath, string WorkSheetName) { DataTable dtExcel = new DataTable(); OleDbConnection con = new OleDbConnection(GetExcelConnection(FilePath)); OleDbDataAdapter adapter = new OleDbDataAdapter( " Select * from [ " + WorkSheetName + " $] " , con); // 读取 con.Open(); adapter.FillSchema(dtExcel, SchemaType.Mapped); adapter.Fill(dtExcel); con.Close(); dtExcel.TableName = WorkSheetName; // 返回 return dtExcel; }

 

代码 /// <summary> /// 获取链接字符串 /// </summary> /// <param name="strFilePath"></param> /// <returns></returns> public string GetExcelConnection( string strFilePath) { if ( ! File.Exists(strFilePath)) { throw new Exception( " 指定的Excel文件不存在! " ); } return " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + strFilePath + " ;Extended properties=\ " Excel 8.0 ;Imex = 1 ;HDR = Yes;\ "" ; // @"Provider=Microsoft.Jet.OLEDB.4.0;" + // @"Data Source=" + strFilePath + ";" + // @"Extended Properties=" + Convert.ToChar(34).ToString() + // @"Excel 8.0;" + "Imex=1;HDR=Yes;" + Convert.ToChar(34).ToString(); }

 

转载于:https://www.cnblogs.com/xiebin1986/archive/2010/03/16/1687082.html

相关资源:C#把excel中的数据读入到datatable中去
最新回复(0)