在我們開發各類應用型系統,經常會遇到導入導出Excel,爲什麼會用到他呢?
企業或者單位在從無信息化到信息化的一個轉變過程。
在沒有信息化的企業或單位之前,一般都採用Excel來記錄相應的數據,做統計計算的作用,那麼當企業或單位實施信息化之後必然會將原有數據導入到系統中去存儲與分析。那麼作爲程序員就必然面臨一個將數據導入數據庫的功能,下面針對此類情況作如下概述。
在ASP.NET的B/S架構下,去導入Excel。
舉例來說:
我們需要導入員工信息表到數據庫中。Excel格式如下:
那麼在我們瞭解了這個之後,下面就是在ASP.NET中通過button來觸發導入事件的發生。
protected void btnChange_Click(object sender, EventArgs e)
{
UserInfoClass tClass = (UserInfoClass)Session["UserInfo"];
string tLanguageType = tClass.Language;
//獲取文件路徑
string filePath = this.file1.PostedFile.FileName;
if (filePath != "")
{
if (filePath.Contains("xls"))//判斷文件是否存在
{
InputExcel(filePath);
}
else
{
MessageBox.Show("請檢查您選擇的文件是否爲Excel文件!謝謝!");
}
}
else
{
MessageBox.Show("請先選擇導入文件後,再執行導入!謝謝!");
}
}
private void InputExcel(string pPath)
{
string conn = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + pPath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection oleCon = new OleDbConnection(conn);
oleCon.Open();
string Sql = "select * from [Sheet1$]";
OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, oleCon);
DataSet ds = new DataSet();
mycommand.Fill(ds, "[Sheet1$]");
oleCon.Close();
int count = ds.Tables["[Sheet1$]"].Rows.Count;
for (int i = 0; i < count; i++)
{
string tUserID, tUserName, tDept, tEmail, tLeader, tAngent;
tUserID = ds.Tables["[Sheet1$]"].Rows[i]["員工代號"].ToString().Trim();
tUserName = ds.Tables["[Sheet1$]"].Rows[i]["員工姓名"].ToString().Trim();
tDept = ds.Tables["[Sheet1$]"].Rows[i]["所屬部門代號"].ToString().Trim();
tEmail= ds.Tables["[Sheet1$]"].Rows[i]["E-Mail Address"].ToString().Trim();
tLeader = ds.Tables["[Sheet1$]"].Rows[i]["直屬主管"].ToString().Trim();
tAngent = ds.Tables["[Sheet1$]"].Rows[i]["代理人"].ToString().Trim();
string excelsql = "insert into " + this.UserInfo.Company + "..[resak] (resak001, resak002, resak015,resak005,resak013,resak009) values ('" + tUserID + "','" + tUserName + "','" + tDept + "','" + tEmail + "','" + tLeader + "','" + tAngent + "')";
DBCommand cmd = DscDBData.GetDataDBCommand();
cmd.ExeNonQuery(excelsql);
}
}
當然此部分內容拿過來要稍作修改,比如最後的執行Insert語句的部分,等內容。
上面完成了ASP.NET下導入Excel到數據庫的功能。
接下來如果你希望直接將Excel在SQL語句中導入到數據庫,實現方式如下:
SELECT * INTO PURTC
FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\12.xls',sheet1$)
注意將Excel中的欄位與表中欄位對應Ok的話,即可!
至於導出Excel就比較更多了,在我的之前的文章中也有論述。