当前位置:  编程技术>.net/c#/asp.net

c#.net 读取Excel数据到DataTable中的代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  c#.net 读取Excel数据到DataTable中,分为几种不同的情况,具体大家参照如下代码中的注释,可以帮助理解。 代码1:   代码示例: /// /// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据 /// /// 文件存储路径 /// ...

c#.net 读取Excel数据到DataTable中,分为几种不同的情况,具体大家参照如下代码中的注释,可以帮助理解。

代码1:
 

代码示例:
///
/// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据
///
/// 文件存储路径
/// 工作簿名称
/// 如果争取找到了数据会返回一个完整的Table,否则返回异常
public DataTable GetExcelData(string astrFileName)
{
string strSheetName = GetExcelWorkSheets(astrFileName)[0].ToString();
return GetExcelData(astrFileName, strSheetName);
}

代码2:
 

代码示例:
///
/// 返回指定文件所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
///
/// 要获取的Excel
/// 如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
public ArrayList GetExcelWorkSheets(string strFilePath)
{
ArrayList alTables = new ArrayList();
OleDbConnection odn = new OleDbConnection(GetExcelConnection(strFilePath));
odn.Open();
DataTable dt = new DataTable();
dt = odn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
throw new Exception("无法获取指定Excel的架构。");
}
foreach (DataRow dr in dt.Rows)
{
string tempName = dr["Table_Name"].ToString();
int iDolarIndex = 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)
{
return null;
}
return alTables;
}

代码3:
 

代码示例:
///
/// 获取指定路径、指定工作簿名称的Excel数据
/// http://www.
/// 文件存储路径
/// 工作簿名称
/// 如果争取找到了数据会返回一个完整的Table,否则返回异常
public DataTable GetExcelData(string FilePath, string WorkSheetName)
{
DataTable dtExcel = new DataTable();
OleDbConnection con = new OleDbConnection(GetExcelConnection(FilePath));
OleDbDataAdapter adapter = new OleDbDataAdapter("Select * from [" + WorkSheetName + "$]", con);
//读取
con.Open();
adapter.FillSchema(dtExcel, SchemaType.Mapped);
adapter.Fill(dtExcel);
con.Close();
dtExcel.TableName = WorkSheetName;
//返回
return dtExcel;
}

代码4:
 

代码示例:
///
/// 获取链接字符串
///
///
///
public string GetExcelConnection(string strFilePath)
{
if (!File.Exists(strFilePath))
{
throw new Exception("指定的Excel文件不存在!");
}
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";Extended properties="Excel 8.0;Imex=1;HDR=Yes;"";
//@"Provider=Microsoft.Jet.OLEDB.4.0;" +
//@"Data Source=" + strFilePath + ";" +
//@"Extended Properties=" + Convert.ToChar(34).ToString() +
//@"Excel 8.0;" + "Imex=1;HDR=Yes;" + Convert.ToChar(34).ToString();
}

    
 
 

您可能感兴趣的文章:

  • asp.net(c#版)添加DataRow数据列到DataTable控件
  • Asp.net中DataTable导出到Excel的实现代码
  • asp.net实例代码之添加DataColumn到DataTable控件中
  • .Net读取Excel 返回DataTable实例代码
  • asp.net读取本地与全局资料文件的代码
  • .NET 读取 JSON格式的数据
  • asp.net读取txt文件内容的代码
  • asp.net读取与写入cookie的小例子
  • ASP.NET中上传并读取Excel文件数据示例
  • asp.net上传并读取Excel文件的例子
  • asp.net 全局变量的设置与读取的方法
  • asp.net读取与删除磁盘文件的实例代码
  • asp.net连接数据库读取数据示例分享
  • asp.net xml读取、写入示例代码
  • asp.net 自定义用户控件数据读取及赋值实例
  • asp.net读取excel中的数据并绑定在gridview
  • asp.net使用npoi读取excel模板并导出下载详解
  • asp.net读取excel文件的三种方法示例
  • asp.net读取QQ相册的实现代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • NET c#索引器(indexer)介绍及代码示例
  • asp.net文字水印功能简单代码
  • C#/.NET字符串加密和解密实现(AES和RSA代码举例)
  • asp.net正则表达式提取中文的代码示例
  • c#/ASP.NET操作cookie(读写)代码示例
  • asp.net使用mshtml处理html的代码
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • .net中string实现无重复数字的代码一例
  • asp.net 判断当前日期是该年中第几周的代码
  • 推荐免费源代码下载网站WWW.CPPN.NET
  • asp.net 获取目录中图片的代码
  • asp.net中利用正则表达式判断一个字符串是否为数字的代码
  • asp.net防止页面刷新重复提交的代码
  • C#.NET程序添加到右键菜单的实现代码
  • asp.net 获取ashx中数据的代码
  • asp.net 正则表达式匹配图片路径的实现代码
  • asp.net弹出消息框、确认框的代码汇总
  • asp.net文件分块下载的实现代码
  • asp.net简单的文件上传代码
  • vb.net实现后台发送短信的代码
  • asp.net静态方法弹出对话框的一例代码
  • java命名空间javax.net类socketfactory的类成员方法: createsocket定义及介绍
  • .NET版的ExtJS库 Ext.Net
  • java命名空间java.net类datagramsocket的类成员方法: disconnect定义及介绍
  • node.js的.net扩展 node.net
  • java命名空间java.net类datagramsocket的类成员方法: close定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net接口cookiestore的类成员方法: get定义及介绍
  • 各位之不知道net-snmp是否收费?我的产品中用到了net-snmp lib是否需要向什么单位或者组织付费?
  • java命名空间java.net类socket的类成员方法: isbound定义及介绍
  • 【人才】有没有人会用VC6.0/VS2003.NET/VS2005.NET写WINDOWS下的驱动程序呀。


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3