private static string _filePath=string.Empty ;
#region Excel匯入SQL資料庫
/// <summary>
/// 擷取Excel資料表列表
/// </summary>
/// <returns></returns>
public static ArrayList GetExcelTables()
{
//將Excel架構存入資料裡
System.Data.DataTable dt = new System.Data.DataTable();
ArrayList TablesList=new ArrayList();
if (File.Exists(FilePath))
{
using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet."+
"OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + FilePath))
{
try
{
conn.Open();
dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
}
catch (Exception exp)
{
Log.StrFileName ="查詢Excel表單名";
Log.StrDepartment ="Excel架構存入資料";
Log.StrDescription =exp.ToString ();
Log.WriteLog ();
} //擷取資料表個數
int tablecount=dt.Rows.Count;
for (int i=0;i<tablecount;i=i+2)
{
string tablename=dt.Rows[2].ToString().Trim().TrimEnd('$');
if(TablesList.IndexOf(tablename)<0)
{
TablesList.Add(tablename);
}
}
}
}
return TablesList;
}
/// <summary>
/// 匯入Excel資料表至DataTable(第一行作為表頭)
/// </summary>
/// <returns></returns>
public static System.Data.DataSet FillDataSet()
{
if (!File.Exists(FilePath))
{
throw new Exception("Excel檔案不存在!");
}
ArrayList TableList=new ArrayList();
TableList = GetExcelTables();
if(TableList.Count <=0)
{
return null;
}
System.Data.DataTable table ;
System.Data .DataSet ds=new DataSet ();
OleDbConnection dbcon = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FilePath + ";Extended Properties=Excel 8.0");
try
{
if (dbcon.State == ConnectionState.Closed)
{
dbcon.Open();
}
for(int i=0;i<TableList.Count ;i++)
{
string dtname=TableList.ToString ();
try
{
OleDbCommand cmd = new OleDbCommand("select * from [" + dtname + "$]", dbcon);
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
table=new DataTable (dtname);
adapter.Fill(table);
ds.Tables .Add (table);
}
catch (Exception exp)
{
Log.StrFileName =dtname;
Log.StrDepartment ="將Excel表格匯入DataSet";
Log.StrDescription =exp.ToString ();
Log.WriteLog ();
}
}
}
finally
{
if (dbcon.State == ConnectionState.Open)
{
dbcon.Close();
}
}
return ds;
}
/// <summary>
/// Excel匯入資料庫
/// </summary>
/// <returns></returns>
public static DataSet ImportFromExcel()
{
return FillDataSet();
}
#endregion