asp.net上传Excel文件并读取数据的实现方法
 更新时间:2019年03月07日 09:47:29   作者:willingtolove  

这篇文章主要给大家介绍了关于asp.net上传Excel文件并读取数据的实现方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言
本文主要给大家介绍了关于asp.net上传Excel文件并读取数据的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
实现如下:
前台代码:使用服务端控件实现上传

<form id=”form1″ runat=”server”>
<div>
<asp:FileUpload ID=”ExcelFileUpload” runat=”server” />
<asp:Button ID=”UploadBtn” runat=”server” Text=”确定上传” OnClick=”UploadBtn_Click” />
</div>
</form>

服务端代码:

protected void UploadBtn_Click(object sender, EventArgs e)
{
if (ExcelFileUpload.HasFile == false)//HasFile用来检查FileUpload是否有文件
{
Response.Write(“<script>alert(‘请您选择Excel文件’)</script> “);
return;//当无文件时,返回
}
string IsXls = Path.GetExtension(ExcelFileUpload.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
if (IsXls != “.xlsx” && IsXls != “.xls”)
{
Response.Write(ExcelFileUpload.FileName);
Response.Write(“<script>alert(‘只可以选择Excel文件’)</script>”);
return;//当选择的不是Excel文件时,返回
}

string filename = ExcelFileUpload.FileName;//获取Execle文件名
string savePath = Server.MapPath((“UploadExcel\\\\”) + filename);//Server.MapPath 服务器上的指定虚拟路径相对应的物理文件路径
//savePath =”D:\\vsproject\\Projects\\exceltestweb\\exceltestweb\\uploadfiles\\test.xls”
//Response.Write(savePath);
DataTable ds = new DataTable();
ExcelFileUpload.SaveAs(savePath);//将文件保存到指定路径

DataTable dt = GetExcelDatatable(savePath);//读取excel数据
List<RegNumInfo> regList = ConvertDtToInfo(dt);//将datatable转为list
File.Delete(savePath);//删除文件

Response.Write(“<script>alert(‘上传文件读取数据成功!’);</script>”);
}
/// <summary>
/// 从excel文件中读取数据
/// </summary>
/// <param name=”fileUrl”>实体文件的存储路径</param>
/// <returns></returns>
private static DataTable GetExcelDatatable(string fileUrl)
{
//支持.xls和.xlsx,即包括office2010等版本的;HDR=Yes代表第一行是标题,不是数据;
string cmdText = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” + fileUrl + “; Extended Properties=\\”Excel 12.0;HDR=Yes\\””;
System.Data.DataTable dt = null;
//建立连接
OleDbConnection conn = new OleDbConnection(cmdText);
try
{
//打开连接
if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
{
conn.Open();
}

System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string strSql = “select * from [Sheet1$]”; //这里指定表明为Sheet1,如果修改过表单的名称,请使用修改后的名称
OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
dt = ds.Tables[0]; ;
return dt;
}
catch (Exception exc)
{
throw exc;
}
finally
{
conn.Close();
conn.Dispose();
}
}
/// <summary>
/// 将datatable转换为list集合
/// </summary>
/// <param name=”dt”>DataTable</param>
/// <returns></returns>
private static List<RegNumInfo> ConvertDtToInfo(DataTable dt)
{
List<RegNumInfo> list = new List<RegNumInfo>();
if (dt.Rows.Count > 0)
{
foreach (DataRow item in dt.Rows)
{
RegNumInfo info = new RegNumInfo();
info.RegNum = item[0].ToString();
info.Name = item[1].ToString();
info.Period = item[2].ToString();
info.Remark = item[3].ToString();
list.Add(info);
}
}
return list;
}

public class RegNumInfo
{
public string RegNum { get; set; }
public string Name { get; set; }
public string Period { get; set; }
public string Remark { get; set; }
}

注意:出现“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序” 的报错的解决方案

  1、因为读取excel文件使用的是OleDb,如果服务器没有安装office,需要安装数据访问组件(AccessDatabaseEngine);

    *适用于office2010的

    Microsoft Access Database Engine 2010 Redistributable

    www.microsoft.com/zh-CN/download/details.aspx?id=13255

  2、在IIS应用程序池中,设置“”启用兼容32位应用程序”;

解决方案具体可参考这篇文章:www.cnhackhy.com/article/157457.htm
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对华域联盟的支持。

您可能感兴趣的文章:ASP.NET 上传文件导入Excel的示例asp.net core webapi文件上传功能的实现ASP.NET Core单文件和多文件上传并保存到服务端的方法asp.net利用ashx文件实现文件的上传功能asp.net大文件上传解决方案实例代码ASP.NET MVC实现批量文件上传ASP.NET Core文件上传与下载实例(多种上传方式)解决asp.net上传文件超过了最大请求长度的问题ASP.NET MVC HttpPostedFileBase文件上传的实例代码ASP.NET 上传文件到共享文件夹的示例

asp.net
上传
excel

相关文章
ASP.NET Core 数据保护(Data Protection 集群场景)下篇这篇文章主要为大家再一次介绍了ASP.NET Core 数据保护(Data Protection),具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2016-09-09
Asp.net 连接MySQL的实现代码[]ASP.NET连接MySQL需要一个组件(.net本身不提供访问MySQL的驱动)MySQL.Data.Dll,此为官方提供(纯C#开发,开源噢),有多个版本选择,采用的数据访问模式为ADO.NET,跟asp.net访问sqlserver很像,非常简单。 2009-08-08
DataGridView右键菜单自定义显示及隐藏列功能 WinForm程序中表单的列可自定义显示及隐藏,是一种常见的功能,对于用户体验来说是非常好的。这篇文章主要介绍了DataGridView右键菜单自定义显示及隐藏列功能,需要的朋友可以参考下 2019-11-11
ASP.NET MVC5网站开发用户修改资料和密码(六)这篇文章主要介绍了ASP.NET MVC5网站开发用户修改资料和密码,本文即将结束member区域的用户部分,感兴趣的小伙伴们可以参考一下 2015-09-09
CreateOutputCachedItemKey 缓存key的创建有关OutputCache的相关资料大家可以查看 OutputCacheProvider OutputCache的一点点认识 ,我们还是复习一下OutputCache内容 2012-11-11
.NET工厂方法模式讲解这篇文章主要为大家详细介绍了ASP.NET工厂方法模式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 2016-11-11
.net搜索查询并实现分页实例.net搜索查询并实现分页实例,需要的朋友可以参考一下 2013-03-03
DropDownList 下拉框选择改变促发事件和防全局刷新(推荐)这篇文章主要介绍了DropDownList 下拉框选择改变促发事件和防全局刷新(推荐)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 2016-10-10
在FireFox/IE下Response中文文件名乱码问题解决方案只是针对没有空格和IE的情况下使用Response.AppendHeader()如果想在FireFox下输出没有编码的文件,并且IE下输出的文件名中空格不为+号,就要多一次判断了,接下来将详细介绍下感兴趣的朋友可以了解下,或许对你有所帮助 2013-02-02
ASP.NET操作各类时间段获取方法汇总这篇文章主要介绍了ASP.NET操作各类时间段获取方法,实例汇总了各类常见的时间段获取方法,需要的朋友可以参考下 2014-11-11

最新评论

声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。