使用OLEDB读取不同版本Excel数据的连接字符串设置
来源:互联网 发布:淘宝不能搜网盘 编辑:程序博客网 时间:2024/05/22 06:20
/// <summary>
/// 把数据从Excel装载到DataTable
/// </summary>
/// <param name="pathName">带路径的Excel文件名</param>
/// <param name="sheetName">工作表名</param>
/// <param name="tbContainer">将数据存入的DataTable</param>
/// <returns></returns>
public DataTable ExcelToDataTable(string pathName, string sheetName)
{
DataTable tbContainer = new DataTable();
string strConn = string.Empty;
if (string.IsNullOrEmpty(sheetName)) { sheetName = "Sheet1"; }
FileInfo file = new FileInfo(pathName);
if (!file.Exists) { throw new Exception("文件不存在"); }
string extension = file.Extension;
switch (extension)
{
case ".xls":
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
case ".xlsx":
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
break;
default:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
}
//链接Excel
OleDbConnection cnnxls = new OleDbConnection(strConn);
//读取Excel里面有 表Sheet1
OleDbDataAdapter oda = new OleDbDataAdapter(string.Format("select * from [{0}$]", sheetName), cnnxls);
DataSet ds = new DataSet();
//将Excel里面有表内容装载到内存表中!
oda.Fill(tbContainer);
return tbContainer;
}
这里需要注意的地方是,当文件的后缀名为.xlsx(excel2007/2010)时的连接字符串是"Provider=Microsoft.ACE.OLEDB.12.0;....",注意中间红色部分不是"Jet"。
/// 把数据从Excel装载到DataTable
/// </summary>
/// <param name="pathName">带路径的Excel文件名</param>
/// <param name="sheetName">工作表名</param>
/// <param name="tbContainer">将数据存入的DataTable</param>
/// <returns></returns>
public DataTable ExcelToDataTable(string pathName, string sheetName)
{
DataTable tbContainer = new DataTable();
string strConn = string.Empty;
if (string.IsNullOrEmpty(sheetName)) { sheetName = "Sheet1"; }
FileInfo file = new FileInfo(pathName);
if (!file.Exists) { throw new Exception("文件不存在"); }
string extension = file.Extension;
switch (extension)
{
case ".xls":
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
case ".xlsx":
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";
break;
default:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
break;
}
//链接Excel
OleDbConnection cnnxls = new OleDbConnection(strConn);
//读取Excel里面有 表Sheet1
OleDbDataAdapter oda = new OleDbDataAdapter(string.Format("select * from [{0}$]", sheetName), cnnxls);
DataSet ds = new DataSet();
//将Excel里面有表内容装载到内存表中!
oda.Fill(tbContainer);
return tbContainer;
}
这里需要注意的地方是,当文件的后缀名为.xlsx(excel2007/2010)时的连接字符串是"Provider=Microsoft.ACE.OLEDB.12.0;....",注意中间红色部分不是"Jet"。
参数HDR的值:
HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
参数Excel 8.0
对于Excel 97以上版本都用Excel 8.0
IMEX ( IMport EXport mode )设置
IMEX 有三种模式,各自引起的读写行为也不同:
0 is Export mode
1 is Import mode
2 is Linked mode (full update capabilities)
我这里特别要说明的就是 IMEX 参数了,因为不同的模式代表著不同的读写行为:
当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
意义如下:
0 ---输出模式;
1---输入模式;
2----链接模式(完全更新能力)
1 0
- 使用OLEDB读取不同版本Excel数据的连接字符串设置
- 使用OLEDB读取不同版本Excel数据的连接字符串设置
- 使用OLEDB读取不同版本Excel数据的连接字符串设置
- 使用OLEDB读取不同版本Excel数据的连接字符串设置
- [OLEDB]OLEDB对于不同版本Excel的连接字符串
- C#读取不同版本excel的连接字符串
- 不同Excel版本的连接字符串
- OleDb操作不同版本的Excel
- OLEDB方式读取Excel丢失数据、字符串截断的原因和解决方法
- 用OleDb读取Excel数据
- 怎样使用oledb读取Excel?
- OLEDB方式读取Excel丢失数据的原因和解决方法
- C#使用OLEDB读取Excel的一个注意点
- 用OleDb读取Excel中的数据
- C# OLEDB方式读取Excel文件数据
- 连接不同数据--OleDb(不完整)
- ACE OLEDB 12.0连接字符串(Excel 2007)
- ACE OLEDB 12.0连接字符串(Excel 2007)
- NKOI 1466 广场铺砖
- springmvc——数据格式化Formatter
- Apache Flink Client生成StreamGraph
- 每个程序员都应该收藏的算法复杂度速查表
- web开发流程
- 使用OLEDB读取不同版本Excel数据的连接字符串设置
- 视频驱动V4L2子系统驱动架构 - ioctl
- 企业大数据平台一:企业需求及相关的基本组件
- static大显身手
- stl各种类型大致分析
- 博弈论(一):Nim游戏
- servlet实现文件下载
- Java的设计模式——单例
- PHP file_get_content在远程通信之前的准备,服务器中json_decode解析详解