ASP.NET Excel导入SQL Server数据库是如何实现的呢,前提是ASP.NET Excel导入SQL Server数据库的字段在表里都有,不然会出现错误 。
ASP.NET Excel导入SQL Server数据库类文件:
- using System.Data.OleDb;
- using System.Data.SqlClient;
-
- public class ExcelToSQL
- {
- public SqlConnection sqlconnew SqlConnection("连接字符串");
- public SqlCommand sqlcom;
-
-
- public ExcelToSQL()
- {
- if (sqlcon.State.ToString() == "Open")
- sqlcon.Close();
- }
- public int ImportSql(string excelPath, string tableName)
- {
- if (!TableExist(tableName))
- return (int)ImportState.tableNameError;
-
- DataTable dt = ExcelToDataTable(excelPath);
- if (dt == null)
- {
- return (int)ImportState.excelFormatError;
- }
- ArrayList tableField = GetTableField(tableName);
-
- string columnName = "ID,";
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- columnName += dt.Columns[i].ColumnName + ",";
- string currentColumn = dt.Columns[i].ToString().ToUpper();
- for (int j = 0; j < tableField.Count; j++)
- {
- if (tableField[j].ToString().ToUpper() == dt.Columns[i].ToString().ToUpper())
- break;
-
- if ((tableField[j].ToString().ToUpper() != dt.Columns[i].ToString().ToUpper()) && j == tableField.Count - 1)
- return (int)ImportState.fieldMatchError;
- }
- }
- int m = columnName.LastIndexOf(,);
- columnName = columnName.Remove(m);
-
- sqlcom = new SqlCommand();
- sqlcom.Connection = sqlcon;
- sqlcon.Open();
- sqlcom.CommandType = CommandType.Text;
-
- for (int h = 0; h < dt.Rows.Count; h++)
- {
- string value = "" + System.Guid.NewGuid().ToString() + "" + ",";
-
- for (int k = 0; k < dt.Columns.Count; k++)
- {
- value += "" + dt.Rows[h][k].ToString() + "" + ",";
- }
- value = value.Remove(0, 1);
- int n = value.LastIndexOf(,);
- value = value.Remove(n);
- n = value.LastIndexOf("");
- value = value.Remove(n);
-
- try
- {
- string sql = "insert into " + tableName + "(" + columnName + ") values(" + value + ")";
- sqlcom.CommandText = sql;
- string sss = sqlcom.ExecuteNonQuery().ToString();
- }
- catch (Exception err)
- {
- string erroe = err.Message;
- return (int)ImportState.dataTypeError;
- }
- }
- sqlcon.Close();
- sqlcom.Dispose();
-
- return (int)ImportState.right;
- }
- public DataTable ExcelToDataTable(string excelPath)
- {
- string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelPath + ";Extended Properties=Excel 8.0;IMEX=1";
- System.Data.OleDb.OleDbConnection Conn = new System.Data.OleDb.OleDbConnection(strCon);
- string strCom = "SELECT * FROM [Sheet1$]";
- DataTable dt;
- try
- {
- Conn.Open();
- System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, Conn);
- DataSet ds = new DataSet();
- myCommand.Fill(ds, "[Sheet1$]");
- Conn.Close();
- dt = ds.Tables[0];
- }
- catch(Exception err)
- {
- return null;
- }
- return dt;
- }
- public bool TableExist(string tableName)
- {
- sqlcom = new SqlCommand();
- sqlcom.Connection = sqlcon;
- sqlcom.CommandType = CommandType.Text;
- try
- {
- sqlcon.Open();
- string sql = "select name from sysobjects where type=u";
- sqlcom.CommandText = sql;
- SqlDataReader sqldr = sqlcom.ExecuteReader();
- while (sqldr.Read())
- {
- if (sqldr.GetString(0).ToUpper() == tableName.ToUpper())
- return true;
- }
- }
- catch { return false; }
- finally
- {
- sqlcon.Close();
- }
- return false;
- }
- public ArrayList GetTableField(string tableName)
- {
- ArrayList al = new ArrayList();
- sqlcom = new SqlCommand();
- sqlcom.Connection = sqlcon;
- sqlcom.CommandType = CommandType.Text;
- try
- {
- sqlcon.Open();
- string sql = "SELECT b.name FROM sysobjects a INNER JOIN syscolumns b ON a.id = b.id WHERE (a.name = " + tableName + ")";
- sqlcom.CommandText = sql;
- SqlDataReader sqldr = sqlcom.ExecuteReader();
- while (sqldr.Read())
- {
- al.Add(sqldr.GetString(0));
- }
- }
- finally
- {
- sqlcon.Close();
- }
- return al;
- }
- public enum ImportState
- {
- right = 1,
- tableNameError = 2,
- fieldMatchError = 3,
- dataTypeError = 4,
- excelFormatError=5,
- }
- public void Alert(string str)
- {
- HttpContext.Current.Response.Write("");
- }
- }
ASP.NET Excel导入SQL Server数据库的操作就向你介绍到这里,希望通过实例对你了解ASP.NET Excel导入SQL Server数据库有所帮助 。