您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在asp.net中上傳Excel文件并讀取數據,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
實現如下:
前臺代碼:使用服務端控件實現上傳
<form id="form1" runat="server"> <div> <asp:FileUpload ID="ExcelFileUpload" runat="server" /> <asp:Button ID="UploadBtn" runat="server" Text="確定上傳" OnClick="UploadBtn_Click" /> </div> </form>
服務端代碼:
protected void UploadBtn_Click(object sender, EventArgs e) { if (ExcelFileUpload.HasFile == false)//HasFile用來檢查FileUpload是否有文件 { Response.Write("<script>alert('請您選擇Excel文件')</script> "); return;//當無文件時,返回 } string IsXls = Path.GetExtension(ExcelFileUpload.FileName).ToString().ToLower();//System.IO.Path.GetExtension獲得文件的擴展名 if (IsXls != ".xlsx" && IsXls != ".xls") { Response.Write(ExcelFileUpload.FileName); Response.Write("<script>alert('只可以選擇Excel文件')</script>"); return;//當選擇的不是Excel文件時,返回 } string filename = ExcelFileUpload.FileName;//獲取Execle文件名 string savePath = Server.MapPath(("UploadExcel\\") + filename);//Server.MapPath 服務器上的指定虛擬路徑相對應的物理文件路徑 //savePath ="D:\vsproject\Projects\exceltestweb\exceltestweb\uploadfiles\test.xls" //Response.Write(savePath); DataTable ds = new DataTable(); ExcelFileUpload.SaveAs(savePath);//將文件保存到指定路徑 DataTable dt = GetExcelDatatable(savePath);//讀取excel數據 List<RegNumInfo> regList = ConvertDtToInfo(dt);//將datatable轉為list File.Delete(savePath);//刪除文件 Response.Write("<script>alert('上傳文件讀取數據成功!');</script>"); } /// <summary> /// 從excel文件中讀取數據 /// </summary> /// <param name="fileUrl">實體文件的存儲路徑</param> /// <returns></returns> private static DataTable GetExcelDatatable(string fileUrl) { //支持.xls和.xlsx,即包括office2010等版本的;HDR=Yes代表第一行是標題,不是數據; string cmdText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileUrl + "; Extended Properties=\"Excel 12.0;HDR=Yes\""; System.Data.DataTable dt = null; //建立連接 OleDbConnection conn = new OleDbConnection(cmdText); try { //打開連接 if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed) { conn.Open(); } System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string strSql = "select * from [Sheet1$]"; //這里指定表明為Sheet1,如果修改過表單的名稱,請使用修改后的名稱 OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn); DataSet ds = new DataSet(); da.Fill(ds); dt = ds.Tables[0]; ; return dt; } catch (Exception exc) { throw exc; } finally { conn.Close(); conn.Dispose(); } } /// <summary> /// 將datatable轉換為list集合 /// </summary> /// <param name="dt">DataTable</param> /// <returns></returns> private static List<RegNumInfo> ConvertDtToInfo(DataTable dt) { List<RegNumInfo> list = new List<RegNumInfo>(); if (dt.Rows.Count > 0) { foreach (DataRow item in dt.Rows) { RegNumInfo info = new RegNumInfo(); info.RegNum = item[0].ToString(); info.Name = item[1].ToString(); info.Period = item[2].ToString(); info.Remark = item[3].ToString(); list.Add(info); } } return list; }
public class RegNumInfo { public string RegNum { get; set; } public string Name { get; set; } public string Period { get; set; } public string Remark { get; set; } }
注意:出現“未在本地計算機上注冊“microsoft.ACE.oledb.12.0”提供程序” 的報錯的解決方案
1、因為讀取excel文件使用的是OleDb,如果服務器沒有安裝office,需要安裝數據訪問組件(AccessDatabaseEngine);
*適用于office2010的
Microsoft Access Database Engine 2010 Redistributable
https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
2、在IIS應用程序池中,設置“”啟用兼容32位應用程序”;
ASP.NET 是開源,跨平臺,高性能,輕量級的 Web 應用構建框架,常用于通過 HTML、CSS、JavaScript 以及服務器腳本來構建網頁和網站。
關于怎么在asp.net中上傳Excel文件并讀取數據就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。