gpt4 book ai didi

ASP.NET实现上传Excel功能

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章ASP.NET实现上传Excel功能由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

这几天正好用到上传Excel,并根据Excel中的数据做相应的处理,故整理以备用.

用到的资源:

(1)NOPI 2.2.0.0 可自己官网下载,也可点击:http://pan.baidu.com/s/1b1EMdg 。

(2)用到一些常见处理文件的公共方法类,可以添加到项目中:http://pan.baidu.com/s/1bJpHuQ 。

如过上述连接因故无法使用,可在评论留下邮箱,我打包发送过去,如有更好的建议,欢迎指导.

后台的提示方法ShowMsgHelper,根据自己的改写即可.

前台代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!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 >

后台代码; 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
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 ;
   }
  }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我! 。

原文链接:http://www.cnblogs.com/MichaelWillLee/p/6633674.html 。

最后此篇关于ASP.NET实现上传Excel功能的文章就讲到这里了,如果你想了解更多关于ASP.NET实现上传Excel功能的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com