asp.net上传Excel文件并读取内容,自定义上传控件样式

2021-03-07 21:27

阅读:546

标签:getc   director   top   over   run   class   private   triggers   css样式   

一、页面增加上传控件,并在上传时判断是否是Excel文件(根据后缀名判断):

 1     table>
 2         tr>
 3             td>
 4                 span style="color: Red; clear: both; vertical-align: middle;">*span> Excel文件:
 5             td>
 6             td>
 7                 a>
 8                     input type="text" id="des" readonly="readonly" />
 9                 a>
10             td>
11             td>
12                 asp:UpdatePanel ID="UpdatePanel1" runat="server">
13                     ContentTemplate>
14                         a href="javascript:;" id="aFileUpload" class="files">
15                             input type="file" runat="server" id="FileUpload" title="Select file" name="FileUpload" onchange="document.getElementById(‘des‘).value=‘‘;if(this.files[0].name.indexOf(‘.xls‘)16                     document.getElementById(‘des‘).value=‘‘; this.value = null; return;};document.getElementById(‘des‘).value=this.files[0].name;" />
17                         a>
18                     ContentTemplate>
19                     Triggers>
20                         asp:PostBackTrigger ControlID="btnOK" />
21                     Triggers>
22                 asp:UpdatePanel>
23             td>
24         tr>
25         tr>
26             td>td>
27             td>
28                 asp:Button ID="btnOK" runat="server" Text="确定" OnClick="btnOK_Click" />
29             td>
30         tr>
31     table>

 

二、增加css样式,用于去掉上传控件默认的样式,使用自定义样式:

 1  2         /*file容器样式*/
 3         a.files {
 4             margin: 0 auto;
 5             float: left;
 6             width: 30px;
 7             height: 30px;
 8             overflow: hidden;
 9             display: block;
10             border: 1px solid #d7d7d7;
11             background: url(browse-l.png) left top no-repeat;
12             text-decoration: none;
13         }
14             /*file设为透明,并覆盖整个触发面*/
15             a.files input {
16                 margin-left: -270px;
17                 font-size: 24px;
18                 cursor: pointer;
19                 filter: alpha(opacity=0);
20                 opacity: 0;
21             }
22             /*取消点击时的虚线框*/
23             a.files, a.files input {
24                 outline: none; /*ff*/
25                 hide-focus: expression(this.hideFocus=true); /*ie*/
26             }
27     

三、上传并读取Excel方法:

 1 protected void btnOK_Click(object sender, EventArgs e)
 2         {
 3             string toFileFullPath = "";        //物理完整路径
 4             string filePath = "";     //上传后的文件路径
 5             if (HttpContext.Current != null)
 6                 toFileFullPath = HttpContext.Current.Server.MapPath("~");
 7             //检查是否有该路径,没有就创建
 8             if (!Directory.Exists(toFileFullPath))
 9                 Directory.CreateDirectory(toFileFullPath);
10             HttpFileCollection files = Request.Files;
11             if (files.Count > 0)
12             {
13                 string fileName = files[0].FileName;
14                 string ext = System.IO.Path.GetExtension(fileName);//获取后缀名
15                 if (ext == ".xlsx")
16                     fileName = "更改的名称.xlsx";
17                 else if (ext == ".xls")
18                     fileName = "更改的名称.xls";
19                 filePath = Path.Combine(toFileFullPath, fileName);
20                 files[0].SaveAs(filePath);
21             }
22             DataSet ds = ExcelToDataSet(filePath);
23             for (int i = 0; i 0].Rows.Count; i++)
24             {
25                 //只能读取有表头的列
26                 Response.Write(ds.Tables[0].Rows[i][0].ToString());//获取第一列数据
27                 Response.Write(ds.Tables[0].Rows[i][1].ToString());//获取第二列数据
28             }
29         }
30 
31         /// 
32         /// 功能:导入Excel
33         /// 方式:NPOI
34         /// 支持格式:支持xls和xlsx格式
35         /// 调用注意:默认第一行为表头,从第2行开始读取数据
36         /// 
37         /// excel 文件路径
38         /// 
39         private DataSet ExcelToDataSet(string strFileName)
40         {
41             ISheet sheet = null;
42             DataSet ds = new DataSet();
43             DataTable dt = new DataTable();
44             IWorkbook workbook = null;
45             try
46             {
47                 FileStream file = new FileStream(strFileName, FileMode.Open, FileAccess.Read);
48                 //if (strFileName.IndexOf(".xlsx") > 0) // 2007版本
49                 //    workbook = new XSSFWorkbook(file);
50                 //else if (strFileName.IndexOf(".xls") > 0) // 2003版本
51                 //    workbook = new HSSFWorkbook(file);
52                 workbook = WorkbookFactory.Create(file);
53                 //获取sheet
54                 sheet = workbook.GetSheetAt(0);
55                 if (sheet != null)
56                 {
57                     IRow headerRow = sheet.GetRow(0);
58                     int cellCount = headerRow.LastCellNum; //一行最后一个cell的编号 即总的列数
59                     for (int j = 0; j )
60                     {
61                         ICell cell = headerRow.GetCell(j);
62                         if (cell == null)
63                         {
64                             string strColumnName = (j++).ToString(); //判断如果第一列之后还存在多列,列名必须不同,否则报错
65                             dt.Columns.Add(strColumnName);
66                             continue;
67                         }
68                         dt.Columns.Add(cell.ToString());
69                     }
70                     for (int i = (sheet.FirstRowNum + 1); i )
71                     {
72                         IRow row = sheet.GetRow(i);
73                         DataRow dataRow = dt.NewRow();
74                         if (row != null)
75                         {
76                             for (int j = row.FirstCellNum; j )
77                             {
78                                 if (row.GetCell(j) != null)
79                                     dataRow[j] = row.GetCell(j).ToString();
80                             }
81                             dt.Rows.Add(dataRow);
82                         }
83                     }
84                     ds.Tables.Add(dt);
85                 }
86                 return ds;
87             }
88             catch (Exception ex)
89             {
90                 Console.WriteLine("Exception: " + ex.Message);
91                 return null;
92             }
93         }

 

备注:读取Excel需要添加插件(附插件地址):https://files.cnblogs.com/files/xbingyou/%E8%AF%BB%E5%8F%96Excel%E6%8F%92%E4%BB%B6.rar

   百度网盘链接:https://pan.baidu.com/s/1otEqimEI3NOCHsc5olSM6A
   提取码:u7zv

asp.net上传Excel文件并读取内容,自定义上传控件样式

标签:getc   director   top   over   run   class   private   triggers   css样式   

原文地址:https://www.cnblogs.com/xbingyou/p/12883052.html


评论


亲,登录后才可以留言!