
使用C#將Excel文件中數據導入SQL Server數據庫
由于項目中加入了新的功能,可以使管理員向數據庫中導入Excel數據。因此,在商品管理這塊需要對Excel進行操作,在網上查了些資料,根據項目的實際情況進行了一定的優化,這里簡單的介紹下。
C#代碼
[csharp] view plain copy
<span style="font-family:'Microsoft YaHei';font-size:18px;">/// <summary>
/// 上傳Excel文件,并將數據導入到數據庫
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtnSure_Click(object sender, EventArgs e)
{
// 定義變量,并賦初值
string url = this.fileUpLoad.PostedFile.FileName;
string urlLocation = "";
// 判斷傳輸地址是否為空
if (url == "")
{
// 提示“請選擇Excel文件”
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script defer>alert('請選擇97~2003版Excel文件!');</script>");
return;
}
// 判斷獲取的是否為地址,而非文件名
if (url.IndexOf("\\") > -1)
{
// 獲取文件名
urlLocation = url.Substring(url.LastIndexOf("\\") + 1);//獲取文件名
}
else
{
// url為文件名時,直接獲取文件名
urlLocation = url;
}
// 判斷指定目錄下是否存在文件夾,如果不存在,則創建
if (!Directory.Exists(Server.MapPath("~\\up")))
{
// 創建up文件夾
Directory.CreateDirectory(Server.MapPath("~\\up"));
}
//在系統中建文件夾up,并將excel文件另存
this.fileUpLoad.SaveAs(Server.MapPath("~\\up") + "\\" + urlLocation);//記錄文件名到服務器相對應的文件夾中
// Response.Write(urlLocation);
// 取得保存到服務器端的文件路徑
string strpath = Server.MapPath("~\\up") + "\\" + urlLocation;
// 取得config中的字段
string connectionString = ConfigurationManager.AppSettings["Connect"].ToString();
string strCon = ConfigurationManager.AppSettings["strUpLoad"].ToString();
// 替換變量
strCon = strCon.Replace("$Con$", strpath);
// 初始化導入Excel對象
ImportExcel excel = new ImportExcel();
// 調用方法,將Excel文件導入數據庫
excel.TransferData(strCon, "t_Goods", connectionString);
}</span>
TransferData類
[csharp] view plain copy
<span style="font-family:'Microsoft YaHei';font-size:18px;">public void TransferData(string strCon, string sheetName, string connectionString)
{
DataSet ds = new DataSet();
try
{
//獲取全部數據
OleDbConnection conn = new OleDbConnection(strCon);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = string.Format("select * from [{0}$]", sheetName);
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, sheetName);
//如果目標表不存在則創建,excel文件的第一行為列標題,從第二行開始全部都是數據記錄
string strSql = string.Format("if not exists(select * from sysobjects where name = '{0}') create table {0}(", sheetName); //以sheetName為表名
foreach (System.Data.DataColumn c in ds.Tables[0].Columns)
{
strSql += string.Format("[{0}] varchar(255),", c.ColumnName);
}
strSql = strSql.Trim(',') + ")";
using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString))
{
sqlconn.Open();
System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand();
command.CommandText = strSql;
command.ExecuteNonQuery();
sqlconn.Close();
}
//用bcp導入數據
//excel文件中列的順序必須和數據表的列順序一致,因為數據導入時,是從excel文件的第二行數據開始,不管數據表的結構是什么樣的,反正就是第一列的數據會插入到數據表的第一列字段中,第二列的數據插入到數據表的第二列字段中,以此類推,它本身不會去判斷要插入的數據是對應數據表中哪一個字段的
using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString))
{
bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
bcp.BatchSize = 100;//每次傳輸的行數
bcp.NotifyAfter = 100;//進度提示的行數
bcp.DestinationTableName = sheetName;//目標表
bcp.WriteToServer(ds.Tables[0]);
}
}
catch (Exception ex)
{
throw new Exception(ex);
}
}
//進度顯示
void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e)
{
}
} </span>
Web界面樣式
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25