Excel匯入資料庫,程式碼實現。
Excel匯入的基本實現:
1.先把Excel匯入DataSet裡
2.再把其中的值區出來,利用sql語句插入到資料庫裡。
/// <summary> /// 實現SQL語句的構造! /// </summary> /// <param name="ds"></param> /// <param name="i"></param> /// <returns>返回SQL語句!</returns> public static string sqlinsert(DataSet ds,string strName, int i) { String strInsert = "insert into "+strName+" values(";
for (int j = 0; j < ds.Tables[0].Columns.Count; j++) { SqlConnection myConnection = new SqlConnection();
strInsert = strInsert + " '" + ds.Tables[0].Rows[i].ItemArray[j].ToString() + " ',"; } return strInsert; } /// <summary> /// 實現excel匯入DataSet內 /// </summary> /// <param name="Pathm"></param> /// <returns>DataSet</returns> /// public static DataSet ExcelToDS(string Pathm) { DataSet ds = new DataSet(); try { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Pathm + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds); } catch (System.Threading.ThreadAbortException) {
} return ds; } protected void BtnLoad_Click(object sender, EventArgs e) {
string sqlStr = ConfigurationManager.AppSettings["DBConnectionString"];
SqlConnection sqlCon = new SqlConnection(sqlStr);
SqlCommand sqlCmd = sqlCon.CreateCommand();
sqlCon.Open();
if (fileExcel.PostedFile.FileName.ToString() != null && fileExcel.PostedFile.FileName.ToString() != "" && fileExcel.PostedFile.FileName.EndsWith(".xls")) { DataSet ds = null;
try { string path = fileExcel.PostedFile.FileName;
path = path.Substring(path.LastIndexOf("//") + 1);
string strFilePath = MapPath("excel") + "//" + path;
fileExcel.PostedFile.SaveAs(strFilePath);
ds = ExcelToDS(strFilePath); } catch (Exception) { Response.Write(" <script >'匯入資料發生錯誤!' </script >"); return; }
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) {
SqlCommand cmd = sqlCon.CreateCommand();
cmd.CommandText = "select TableName from Temp_Table_Name";
string strName=cmd.ExecuteScalar().ToString();
cmd.CommandText = "select TimeNameTable from "+strName+"";
strName = cmd.ExecuteScalar().ToString();
string strInsert = sqlinsert(ds,strName,i);
strInsert = strInsert.Substring(0, strInsert.Length - 1);
strInsert += ")";
Response.Write("<Script Language=JavaScript>alert(/"資料匯入了資料庫!/")</Script>");
sqlCmd.CommandText = strInsert;
sqlCmd.ExecuteNonQuery(); } }