国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET實現上傳Excel功能

2024-07-10 13:32:13
字體:
來源:轉載
供稿:網友

這幾天正好用到上傳Excel,并根據Excel中的數據做相應的處理,故整理以備用。

用到的資源:

(1)NOPI 2.2.0.0 可自己官網下載,也可點擊:http://pan.baidu.com/s/1b1EMdg

(2)用到一些常見處理文件的公共方法類,可以添加到項目中:http://pan.baidu.com/s/1bJpHuQ

如過上述連接因故無法使用,可在評論留下郵箱,我打包發送過去,如有更好的建議,歡迎指導。

后臺的提示方法ShowMsgHelper,根據自己的改寫即可。

前臺代碼:

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>導入EXCEL,生成DataTable</title> <script src="../../Themes/scripts/jquery-1.8.2.min.js"></script> <link href="/Themes/Styles/Site.css" rel="external nofollow" rel="stylesheet" type="text/css" /> <script src="/Themes/scripts/FunctionJS.js" type="text/javascript"></script>  <script type="text/javascript"> $(document).ready(function () {  $("#Import").click(function () {  var filename = $("#FileUpload1").val();  if (filename == '') {   alert('請選擇上傳的EXCEL文件');   return false;  }  else {   var exec = (/[.]/.exec(filename)) ? /[^.]+$/.exec(filename.toLowerCase()) : '';   if (!(exec == "xlsx" || exec == "xls")) {   alert("文件格式不對,請上傳Excel文件!");   return false;   }  }  return true;  }); }); </script></head><body> <form id="form1" runat="server"> <div> <asp:FileUpload ID="FileUpload1" runat="server" /><asp:Button ID="Import" runat="server" Text="導入" OnClick="ImpClick" /> </div> </form></body></html>

后臺代碼;

protected void ImpClick(object sender, EventArgs e) {  try  {  #region 校驗  var fileName = this.FileUpload1.FileName;  if (string.IsNullOrWhiteSpace(fileName))  {   //提示信息   ShowMsgHelper.Alert("請選擇上傳Excel文件");   return;  }  //獲取上傳文件擴展名稱  if (!(fileName.IndexOf(".xlsx") > 0 || fileName.IndexOf(".xls") > 0))  {   ShowMsgHelper.Alert("上傳文件格式不正確,請核對!");   return;  }  #endregion  #region 將Excel文件上傳到服務器上臨時文件夾中  //臨時文件夾,根目錄下/Upload/tmp/,根據自己配置選擇  string path = Server.MapPath("~/") + "Upload//tmp//";  string retStr=UploadHelper.FileUpload(path, this.FileUpload1);  if (!retStr.Equals("上傳成功")) {   ShowMsgHelper.Alert(retStr);   return;  }  #endregion  #region 讀取Excel文件第一個表獲取內容并轉換成DataTable,刪除臨時文件,也可以自己加時間戳,維護處理  DataTable dt = this.ExcelToDataTable(path + this.FileUpload1.FileName, true);  if (dt == null) {   ShowMsgHelper.Alert_Error("獲取失敗");   return;  }  //示例:獲取dt中的值  string test = dt.Rows[0]["name"].ToString();  string test2 = dt.Rows[1]["class"].ToString();  //刪除臨時文件  DirFileHelper.DeleteFile("Upload//tmp//" + fileName);  #endregion   }  catch (Exception ex) {  throw ex;  } } /// <summary> /// 將excel導入到datatable /// </summary> /// <param name="filePath">excel路徑</param> /// <param name="isColumnName">第一行是否是列名</param> /// <returns>返回datatable</returns> public DataTable ExcelToDataTable(string filePath, bool isColumnName) {  DataTable dataTable = null;  FileStream fs = null;  DataColumn column = null;  DataRow dataRow = null;  IWorkbook workbook = null;  ISheet sheet = null;  IRow row = null;  ICell cell = null;  int startRow = 0;  try  {  using (fs = File.OpenRead(filePath))  {   // 2007版本   if (filePath.IndexOf(".xlsx") > 0)   workbook = new XSSFWorkbook(fs);   // 2003版本   else if (filePath.IndexOf(".xls") > 0)   workbook = new HSSFWorkbook(fs);   if (workbook != null)   {   sheet = workbook.GetSheetAt(0);//讀取第一個sheet,當然也可以循環讀取每個sheet   dataTable = new DataTable();   if (sheet != null)   {    int rowCount = sheet.LastRowNum;//總行數    if (rowCount > 0)    {    IRow firstRow = sheet.GetRow(0);//第一行    int cellCount = firstRow.LastCellNum;//列數    //構建datatable的列    if (isColumnName)    {     startRow = 1;//如果第一行是列名,則從第二行開始讀取     for (int i = firstRow.FirstCellNum; i < cellCount; ++i)     {     cell = firstRow.GetCell(i);     if (cell != null)     {      if (cell.StringCellValue != null)      {      column = new DataColumn(cell.StringCellValue);      dataTable.Columns.Add(column);      }     }     }    }    else    {     for (int i = firstRow.FirstCellNum; i < cellCount; ++i)     {     column = new DataColumn("column" + (i + 1));     dataTable.Columns.Add(column);     }    }    //填充行    for (int i = startRow; i <= rowCount; ++i)    {     row = sheet.GetRow(i);     if (row == null) continue;     dataRow = dataTable.NewRow();     for (int j = row.FirstCellNum; j < cellCount; ++j)     {     cell = row.GetCell(j);     if (cell == null)     {      dataRow[j] = "";     }     else     {      //CellType(Unknown = -1,Numeric = 0,String = 1,Formula = 2,Blank = 3,Boolean = 4,Error = 5,)      switch (cell.CellType)      {      case CellType.Blank:       dataRow[j] = "";       break;      case CellType.Numeric:       short format = cell.CellStyle.DataFormat;       //對時間格式(2015.12.5、2015/12/5、2015-12-5等)的處理       if (format == 14 || format == 31 || format == 57 || format == 58)dataRow[j] = cell.DateCellValue;else       dataRow[j] = cell.NumericCellValue;break;      case CellType.String:dataRow[j] = cell.StringCellValue;break;      }     }     }     dataTable.Rows.Add(dataRow);    }    }   }   }  }  return dataTable;  }  catch (Exception)  {  if (fs != null)  {   fs.Close();  }  return null;  } }

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持VeVb武林網!


注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民勤县| 精河县| 洛南县| 江阴市| 海口市| 德江县| 双城市| 桑日县| 湛江市| 南木林县| 玉林市| 泸西县| 青浦区| 张北县| 搜索| 青铜峡市| 盐亭县| 灵川县| 莲花县| 宜兰市| 潮州市| 拜泉县| 武鸣县| 琼海市| 成都市| 彰化市| 高陵县| 保康县| 巴中市| 大竹县| 诸暨市| 民勤县| 泰和县| 平潭县| 海门市| 蕲春县| 略阳县| 天水市| 专栏| 墨玉县| 祥云县|