/// <summary>
///
/// 功能:
///
/// 將任意excel導入數據庫
///
/// 異常:
///
///
/// 注意:
///
/// 該方法是把所有excel內容導入數據庫,並不會檢查重複數據
///
/// </summary>
/// <param name="tableName">數據庫中對應的表名</param>
/// <param name="path">excel路徑</param>
/// <returns>導入成功則返回true</returns>
public static void InsertData(string tableName, string path ,out double progress) {
progress = 0;
DataSet ds = new DataSet();
string strCon = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + path + "; Extended Properties='Excel 12.0;HDR=YES'";
OleDbConnection cn = new OleDbConnection(strCon);
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strCon);
try {
da.Fill(ds, tableName);
DataTable dt = ds.Tables[tableName];
//構造insert語句
string sql_insert = "";
string base_insert = "insert into [" + tableName + "] (";
for (int i = 0; i < dt.Columns.Count; i++) {
if (i != dt.Columns.Count - 1) {
base_insert += dt.Columns[i].ColumnName + ",";
}
else
base_insert += dt.Columns[i].ColumnName + ") values (";
}
for (int i = 0; i < dt.Rows.Count; i++) {
sql_insert = base_insert;
for (int j = 0; j < dt.Columns.Count; j++) {
if (j != dt.Columns.Count - 1) {
sql_insert += "'" + dt.Rows[i][j] + "',";
}
else
sql_insert += "'" + dt.Rows[i][j] + "')";
}
//設置進度變量
progress = (double)(i + 1) / dt.Rows.Count;
//執行insert語句
SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql_insert, null);
}
}
catch (Exception ex) {
throw ex;
}
}
【數據庫】將Excel導入數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.