最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
ASP.NET实现上传Excel功能
时间:2022-06-25 02:56:32 编辑:袖梨 来源:一聚教程网
这几天正好用到上传Excel,并根据Excel中的数据做相应的处理,故整理以备用。
用到的资源:
(1)NOPI 2.2.0.0 可自己官网下载,也可点击:http://pan.**b*aidu.com/s/1b1EMdg
(2)用到一些常见处理文件的公共方法类,可以添加到项目中:http://pan.**b*aidu.com/s/1bJpHuQ
如过上述连接因故无法使用,可在评论留下邮箱,我打包发送过去,如有更好的建议,欢迎指导。
后台的提示方法ShowMsgHelper,根据自己的改写即可。
前台代码:
代码如下 | 复制代码 |
$(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; }); });
|
后台代码;
代码如下 | 复制代码 |
protectedvoidImpClick(objectsender, 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/,根据自己配置选择 stringpath = Server.MapPath("~/") +"Upload\tmp\"; stringretStr=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中的值 stringtest = dt.Rows[0]["name"].ToString(); stringtest2 = dt.Rows[1]["class"].ToString(); //删除临时文件 DirFileHelper.DeleteFile("Upload\tmp\"+ fileName); #endregion } catch(Exception ex) { throwex; } } /// /// 将excel导入到datatable /// /// excel路径 /// 第一行是否是列名 /// publicDataTable ExcelToDataTable(stringfilePath,boolisColumnName) { DataTable dataTable =null; FileStream fs =null; DataColumn column =null; DataRow dataRow =null; IWorkbook workbook =null; ISheet sheet =null; IRow row =null; ICell cell =null; intstartRow = 0; try { using(fs = File.OpenRead(filePath)) { // 2007版本 if(filePath.IndexOf(".xlsx") > 0) workbook =newXSSFWorkbook(fs); // 2003版本 elseif(filePath.IndexOf(".xls") > 0) workbook =newHSSFWorkbook(fs); if(workbook !=null) { sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet dataTable =newDataTable(); if(sheet !=null) { introwCount = sheet.LastRowNum;//总行数 if(rowCount > 0) { IRow firstRow = sheet.GetRow(0);//第一行 intcellCount = firstRow.LastCellNum;//列数
//构建datatable的列 if(isColumnName) { startRow = 1;//如果第一行是列名,则从第二行开始读取 for(inti = firstRow.FirstCellNum; i { cell = firstRow.GetCell(i); if(cell !=null) { if(cell.StringCellValue !=null) { column =newDataColumn(cell.StringCellValue); dataTable.Columns.Add(column); } } } } else { for(inti = firstRow.FirstCellNum; i { column =newDataColumn("column"+ (i + 1)); dataTable.Columns.Add(column); } } //填充行 for(inti = startRow; i { row = sheet.GetRow(i); if(row ==null)continue;
dataRow = dataTable.NewRow(); for(intj = row.FirstCellNum; 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) { caseCellType.Blank: dataRow[j] =""; break; caseCellType.Numeric: shortformat = 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; caseCellType.String: dataRow[j] = cell.StringCellValue; break; } } } dataTable.Rows.Add(dataRow); } } } } } returndataTable; } catch(Exception) { if(fs !=null) { fs.Close(); } returnnull; } } |
相关文章
- 光遇旋转舞者复刻活动怎么玩 09-16
- 原神现在是我的了成就怎么做-现在是我的了成就达成攻略 09-16
- 三国志幻想大陆2枭之歌大医精诚活动如何玩 09-16
- 开放空间宁蒙有什么技能 09-15
- 小鸡舰队出击天空首领活动怎么玩 09-15
- 魔法工艺套装如何解锁使用 09-15