asp.net读取Excel数据到DataTable的代码
2023-06-13 09:14:17 时间
///<summary>
///获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据
///</summary>
///<paramname="FilePath">文件存储路径</param>
///<paramname="WorkSheetName">工作簿名称</param>
///<returns>如果争取找到了数据会返回一个完整的Table,否则返回异常</returns>
publicDataTableGetExcelData(stringastrFileName)
{
stringstrSheetName=GetExcelWorkSheets(astrFileName)[0].ToString();
returnGetExcelData(astrFileName,strSheetName);
}
代码
///<summary>
///返回指定文件所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
///</summary>
///<paramname="strFilePath">要获取的Excel</param>
///<returns>如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空</returns>
publicArrayListGetExcelWorkSheets(stringstrFilePath)
{
ArrayListalTables=newArrayList();
OleDbConnectionodn=newOleDbConnection(GetExcelConnection(strFilePath));
odn.Open();
DataTabledt=newDataTable();
dt=odn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);
if(dt==null)
{
thrownewException("无法获取指定Excel的架构。");
}
foreach(DataRowdrindt.Rows)
{
stringtempName=dr["Table_Name"].ToString();
intiDolarIndex=tempName.IndexOf("$");
if(iDolarIndex>0)
{
tempName=tempName.Substring(0,iDolarIndex);
}
//修正了Excel2003中某些工作薄名称为汉字的表无法正确识别的BUG。
if(tempName[0]=="\"")
{
if(tempName[tempName.Length-1]=="\"")
{
tempName=tempName.Substring(1,tempName.Length-2);
}
else
{
tempName=tempName.Substring(1,tempName.Length-1);
}
}
if(!alTables.Contains(tempName))
{
alTables.Add(tempName);
}
}
odn.Close();
if(alTables.Count==0)
{
returnnull;
}
returnalTables;
}
代码
///<summary>
///获取指定路径、指定工作簿名称的Excel数据
///</summary>
///<paramname="FilePath">文件存储路径</param>
///<paramname="WorkSheetName">工作簿名称</param>
///<returns>如果争取找到了数据会返回一个完整的Table,否则返回异常</returns>
publicDataTableGetExcelData(stringFilePath,stringWorkSheetName)
{
DataTabledtExcel=newDataTable();
OleDbConnectioncon=newOleDbConnection(GetExcelConnection(FilePath));
OleDbDataAdapteradapter=newOleDbDataAdapter("Select*from["+WorkSheetName+"$]",con);
//读取
con.Open();
adapter.FillSchema(dtExcel,SchemaType.Mapped);
adapter.Fill(dtExcel);
con.Close();
dtExcel.TableName=WorkSheetName;
//返回
returndtExcel;
}
代码
///<summary>
///获取链接字符串
///</summary>
///<paramname="strFilePath"></param>
///<returns></returns>
publicstringGetExcelConnection(stringstrFilePath)
{
if(!File.Exists(strFilePath))
{
thrownewException("指定的Excel文件不存在!");
}
return"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+strFilePath+";Extendedproperties=\"Excel8.0;Imex=1;HDR=Yes;\"";
//@"Provider=Microsoft.Jet.OLEDB.4.0;"+
//@"DataSource="+strFilePath+";"+
//@"ExtendedProperties="+Convert.ToChar(34).ToString()+
//@"Excel8.0;"+"Imex=1;HDR=Yes;"+Convert.ToChar(34).ToString();
}
相关文章
- [.NET控件]Telerik RadControls for ASP.NET AJAX 2008 Q1 net 2.0 Web.UI「建议收藏」
- 【愚公系列】2022年10月 .NET CORE工具案例-DiffPlex文本差异组件
- [接上篇]在Window10/11的Linux子系统Docker上部署VB.NET Asp.Net Core WebAPI应用
- 如何使用nginx作为docker容器中ASP.NET应用的反向代理
- 操作excel展示Linux下Poi妙用:操作Excel(linux下poi)
- MongoDB 使用.NET开发充分利用数据库性能(mongodb.net)
- .net搭建ASP.NET应用程序在Linux系统上(linux搭建asp)
- 使用Excel快速读取MySQL数据(excel读取mysql)
- .net利用MSSQL连接ASP.NET的办法探索(mssql 连接asp)
- Oracle数据快速导出至Excel表格(oracle导出excel)
- NET与MySQL实现无缝连接(.net mysql连接)
- 使用Oracle64位Net突破技术极限(oracle64位net)
- asp.net下获取Excel所有的工作表名称
- Asp.Net数据输出到EXCEL表格中
- asp.net(C#)动态添加非ASP的标准html控件(如添加Script标签)
- ASP.NET中生成Excel遇到的问题及改进方法
- 答你所问.NET小常识方便学习asp.net的朋友
- ASP.NET导出Excel打开时提示:与文件扩展名指定文件不一致解决方法
- Asp.net中把Excel数据存储至SQLServer中的具体实现方法
- Asp.Net用OWC操作Excel的实例代码
- vb.net借助剪贴板将图片导入excel内
- .NET操作Excel实例分享
- asp.net导出excel的简单方法实例
- asp.net导出excel数据的常见方法汇总
- Asp.net导出Excel/Csv文本格式数据的方法