一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net上傳Excel文件并讀取數(shù)據(jù)的實現(xiàn)方法

asp.net上傳Excel文件并讀取數(shù)據(jù)的實現(xiàn)方法

2019-06-19 17:14willingtolove ASP.NET教程

這篇文章主要給大家介紹了關于asp.net上傳Excel文件并讀取數(shù)據(jù)的實現(xiàn)方法,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

本文主要給大家介紹了關于asp.net上傳Excel文件并讀取數(shù)據(jù)的相關內(nèi)容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧

實現(xiàn)如下:

前臺代碼:使用服務端控件實現(xiàn)上傳

  <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數(shù)據(jù)
 List<RegNumInfo> regList = ConvertDtToInfo(dt);//將datatable轉為list
 File.Delete(savePath);//刪除文件

 Response.Write("<script>alert('上傳文件讀取數(shù)據(jù)成功!');</script>");
}
/// <summary>
/// 從excel文件中讀取數(shù)據(jù)
/// </summary>
/// <param name="fileUrl">實體文件的存儲路徑</param>
/// <returns></returns>
private static DataTable GetExcelDatatable(string fileUrl)
{
 //支持.xls和.xlsx,即包括office2010等版本的;HDR=Yes代表第一行是標題,不是數(shù)據(jù);
 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; }
}

注意:出現(xiàn)“未在本地計算機上注冊“microsoft.ACE.oledb.12.0”提供程序” 的報錯的解決方案

  1、因為讀取excel文件使用的是OleDb,如果服務器沒有安裝office,需要安裝數(shù)據(jù)訪問組件(AccessDatabaseEngine);

    *適用于office2010的

    Microsoft Access Database Engine 2010 Redistributable

    https://www.microsoft.com/zh-CN/download/details.aspx?id=13255

  2、在IIS應用程序池中,設置“”啟用兼容32位應用程序”;

總結

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国产精品自在自线观看 | 欧美日韩亚洲综合在线一区二区 | 亚洲国产精品久久网午夜 | 网站色小妹| 精品福利一区二区免费视频 | 精品国产一区二区三区国产馆 | 97porm国内自拍视频 | 久久se视频精品视频在线 | 欧美日韩中文国产一区 | se在线播放| 成人欧美视频在线看免费 | 午夜伦伦电影理论片费看 | 大肥臀风间由美 中文字幕 大东北chinesexxxx露脸 | 免费观看毛片视频 | 成人永久免费福利视频网站 | 亚洲图片一区二区 | 国产精品久久久久久久久免费观看 | 四虎影院2022| 女烈受刑重口小说 | 亚洲色导航 | 亚洲欧美综合区自拍另类 | 99久久999久久久综合精品涩 | 亚洲成人伦理 | 国产精品俺来也在线观看了 | 日本一片免费观看高清完整 | 日本性生活免费看 | 亚洲欧美另类专区 | 免费观看成年人视频 | 色五夜婷婷 | 国产精品99在线观看 | 黑人巨大videosjapan高清 黑人好大 | 娇小异类videos | 成人在线播放视频 | 粉嫩高中生第一次不戴套 | 日本在线观看免费观看完整版 | 亚洲精品久久久成人 | 色五月天天 | 亚洲一级视频在线观看 | 波多野结衣 在线 | 欧美日韩一区二区三区韩大 | 修修视频在线观看 |