asp.net上传Excel文件并读取内容,自定义上传控件样式
一、页面增加上传控件,并在上传时判断是否是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')<=0){alert('Please select excel file !');
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 <style>
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 </style>
三、上传并读取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 < ds.Tables[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 /// <summary>
32 /// 功能:导入Excel
33 /// 方式:NPOI
34 /// 支持格式:支持xls和xlsx格式
35 /// 调用注意:默认第一行为表头,从第2行开始读取数据
36 /// </summary>
37 /// <param name="strFileName">excel 文件路径</param>
38 /// <returns></returns>
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 < cellCount; 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 <= sheet.LastRowNum; 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 < cellCount; 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需要添加插件(附插件地址):读取Excel插件.rar
百度网盘链接:https://pan.baidu.com/s/1otEqimEI3NOCHsc5olSM6A
提取码:u7zv
asp.net上传Excel文件并读取内容,自定义上传控件样式的更多相关文章
- 上传excel文件,读取内容,增加事务写入数据库
package com.inspur.icpmg.itss.asset.dao.impl; import com.inspur.icpmg.util.DBHelper; import org.apac ...
- Django框架(上传Excel文件并读取)
博主今天整理下Django框架中上传Excel文件并读取 博主是要在管理平台中新增用例的维护功能,想着通过上传Excel文件来展示用例,下面是项目的路径图: 首先先建数据库模型 model.py 可以 ...
- 从Excel文件中读取内容
从Excel文件中读取内容 global::System.Web.HttpPostedFileBase file = Request.Files["txtFile"]; strin ...
- 【asp.net】asp.net实现上传Excel文件并读取数据
#前台代码:使用服务端控件实现上传 <form id="form1" runat="server"> <div> <asp:Fil ...
- HTML控件ID和NAME属性的区别,以及如何在asp.net页面的.CS文件中获得.ASPX页面中HTML控件的值
在html中:name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号. name是用来提交数据的,提供给表单用,可以重复: id则针对文档操作时候用,不能重复.如:document ...
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
导出到Excel方法: <span style="color: rgb(0, 0, 255);">public</span> <span style= ...
- 条形码的应用三-----------从Excel文件中读取条形码
条形码的应用三------从Excel文件中读取条形码 介绍 上一篇文章,我向大家展示了生成多个条形码并存储到Excel文件中的一个方法.后来我又有了个想法:既然条码插入到excel中了,我可不可以从 ...
- asp.net上传Excel文件到服务端进行读取
1.我们IIS是使用7.5,由于在网站中上传Excel文件到服务端进行数据读取时候出现读取失败情况.一开始以为是没有按照office软件问题,其实不然,因为server是64位操作系统,如果我们要使用 ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- jsp上传excel文件并导入数据库
1,excel文件的上传 需要借助jar包:commons-fileupload-1.2.1.jar以及commons-io-1.3.2.jar 前端的html文件 <form id=" ...
随机推荐
- 力扣696(java)-计数二进制子串(简单)
题目: 给定一个字符串 s,统计并返回具有相同数量 0 和 1 的非空(连续)子字符串的数量,并且这些子字符串中的所有 0 和所有 1 都是成组连续的. 重复出现(不同位置)的子串也要统计它们出现的次 ...
- PolarDB-X 如何做分布式数据库热点分析
简介: PolarDB-X 是一款计算存储分离的云原生分布式数据库,在PolarDB-X 2.0的AUTO模式下,数据库会按照表的主键自动Hash分区,将数据均匀的分布到各个数据节点中,最理想的情况是 ...
- 优化搜索排序结果从而“ 提升CTR、CVR业务指标”
简介: 搭建搜索功能不难,难的是如何提高搜索质量,帮助用户快速找到心中所想的内容或商品,那么搜索结果的相关性排序则是影响用户体验最关键的一环,本文通过阿里云开放搜索电商行业解决方案和大家聊一聊如何优化 ...
- 系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)| 龙蜥技术
简介:已有的应用若想使用RDMA技术改造成本高,那么有没有一种技术是不做任何改造就可以享受RDMA带来的性能优势? 文/龙蜥社区高性能网络SIG 引言 Shared Memory Communi ...
- 代理网关设计与实现(基于NETTY)
简介:本文重点在代理网关本身的设计与实现,而非代理资源的管理与维护. 作者 | 新然 来源 | 阿里技术公众号 一 问题背景 平台端购置一批裸代理,来做广告异地展现审核.从外部购置的代理,使用方 ...
- [Py] Jupyter 写入和执行 python 文件
以 %%writefile request.py 开头. 下面写 python 代码,然后 shift + enter 键,可以把 python 代码写入开头指定的文件中,没有则自动创建. 以 %ru ...
- WPF 如何在静态资源定义字体大小
默认的 WPF 的字体大小的单位是像素,如果想要将字体大小使用 pt 点表示,写在 xaml 里面是直接添加 pt 后缀.但是此时如果在静态资源尝试定义的时候写上了 pt 将会在运行的时候提示无法转换 ...
- shell 调试方法
shell 在 linux 系统中比较常见,简单的脚本可以看着确实没难度,但是当脚本功能复杂后,看起来就不那么流畅了,所以掌握一些调试方式还是很有必要的,这里我收集了一次常用的调试方式. shell调 ...
- OpenCompass-书生浦语大模型实战营第二期第7节作业
书生浦语大模型实战营第二期第7节作业 这一节的作业和第6节作业一样没有特别多好说的,以运行结果为主. 基础作业 使用 OpenCompass 评测 internlm2-chat-1_8b 模型在 C- ...
- vue03 01.vite创建项目
目录 01.创建项目 打包工具 vite介绍 安装命令 安装项目依赖 启动项目 浏览效果 代码目录 打包 预览运行 插件使用 编辑器 01.创建项目 打包工具 vite官网 vite创建项目 vite ...