我有很多excel工作表,其中列略有不同,我想將所有這些工作表(一次一個)導入到一個SQL表中。我舉一個例子:多個不同的Excel工作表放入一個SQL表格
說我編寫了所需的程序並稱之爲Excel2sql轉換器。所以Excel2sql需要一個excel工作表,並創建數據庫表與Excel表單的數據,例如說,我有以下excel表:
Excel_Sheet_1
-----------------------------
FirstName MiddleName LastName
John A. Smith
當我運行Excel2sql(Excel_Sheet_1),一個數據庫表應該被創建對我來說,在它下面的數據:
FirstName MiddleName LastName
John A. Smith
現在,當我用下面的excel表再次運行我的程序:
Excel_Sheet_2
-----------------------------
LastName FirstName MiddleName
wolf Kerry M.
我應該得到以下UP DATED分表:
FirstName MiddleName LastName
John A. Smith
Kerry M. wolf
請注意,它將excel表2的數據添加到已存在的數據庫表中。 它在db的列和excel表格2的列之間做了一些映射,以適當地追加數據。現在
,如果我用下面的excel表再次運行我的程序:
Sheet 3
--------
PhoneNumber LastName MiddleName FirstName
232-232 Lame K. Phoebe
我應該得到以下db表:
FirstName MiddleName LastName PhoneNumber
John A. Smith Null
Kerry M. wolf Null
Phoebe K. Lame 232-232
我想要的代碼,以動態做到這一點,我意思是,任何人都可以使用我的代碼,給它一個Excel表作爲輸入,然後我的代碼將爲他創建一個SQL數據表,並且每當用戶給他一個Excel表時,它應該更新已經創建的SQL表。
請真的需要我能得到的所有幫助。我很新,在這。我寫了一個簡單的代碼,只需將一張excel表單上傳到ALREADY現有的數據表中即可。 (這不是我想要的,但我不得不開始某處)
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void insertdata_Click(object sender, EventArgs e)
{
//-----------------connection to excel=--------------------------
OleDbConnection oconn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("example.xls") + ";Extended Properties=Excel 8.0");
try
{
//-----------------Commad to get all columns---------------------
OleDbCommand ocmd = new OleDbCommand("select * from [Sheet1$]", oconn);
//-----------------open the connection-----------------------
oconn.Open();
//-----------------execute the command ----------------------
OleDbDataReader odr = ocmd.ExecuteReader();
string fname = "";
string lname = "";
string mobnum = "";
//-----------------read from the datareader-------------------
while (odr.Read())
{
//-----------------insert into the db table ------------------
insertdataintosql(fname, lname, mobnum);
}
oconn.Close();
}
catch (DataException ee)
{
lblmsg.Text = ee.Message;
}
finally
{
lblmsg.Text = "Data Inserted Sucessfully";
}
}
public void insertdataintosql(string fname, string lname, string mobnum)
{
//-----------------connection to sql database----------------
SqlConnection conn = new SqlConnection("Data Source=.\\sqlexpress;AttachDbFileName=|DataDirectory|exceltosql.mdf;Trusted_Connection=yes");
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "insert into dbtable(fname,lname,mobnum) values(@fname,@lname,@mobnum)";
cmd.Parameters.Add("@fname", SqlDbType.NVarChar).Value = fname;
cmd.Parameters.Add("@lname", SqlDbType.NVarChar).Value = lname;
cmd.Parameters.Add("@mobnum", SqlDbType.NVarChar).Value = mobnum;
cmd.CommandType = CommandType.Text;
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
再次編寫的代碼IVE是不是我想要的,你可以請幫我修改它來得到我想要的要求!
預先感謝您:)