C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法
2014-05-11 10:46
507 查看
C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法
使用C#导入 Excel数据到 DataTable,如果连接串中只写 Excel 8.0,则正常的字符列,数值列都没有问题,但对于既有数字也有字符的混合列,则读出为空。
后来从网上查到加入IMEX=1 就可将混合型转换为文本,就是连接串为Excel 8.0;IMEX=1,但这有出现 “找不到可安装的 ISAM”。
后来在其两边加上单引号' 就可解决。也就是 'Excel 8.0;IMEX=1'
EXCEL 默认若前8行都没有出现文本,那么就认为这一列的所有值都是数字,可以在注册表下面语句处修改为默认值,比如500,但尽量将字符行向前。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
最后完整的函数如下:
public static System.Data.DataTable CallExcel(string FilePath, string sheetName)
{
OleDbConnection con = new OleDbConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FilePath + ';Extended Properties='Excel 8.0;HDR=YES;IMEX=1'');
con.Open();
string sql = 'select * from [' + sheetName + '$]';//[Sheet1$]';////选择第一个数据SHEET
//OleDbCommand command = new OleDbCommand(sql, con);
//OleDbDataReader reader = command.ExecuteReader();
//if (reader.Read())
//{
// reader[0].ToString();//直接读出数据
//}
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, con);
System.Data.DataTable dt = new System.Data.DataTable();
adapter.Fill(dt);
//reader.Close();
//command.Dispose();
con.Close();
con.Dispose();
return dt;
}
使用C#导入 Excel数据到 DataTable,如果连接串中只写 Excel 8.0,则正常的字符列,数值列都没有问题,但对于既有数字也有字符的混合列,则读出为空。
后来从网上查到加入IMEX=1 就可将混合型转换为文本,就是连接串为Excel 8.0;IMEX=1,但这有出现 “找不到可安装的 ISAM”。
后来在其两边加上单引号' 就可解决。也就是 'Excel 8.0;IMEX=1'
EXCEL 默认若前8行都没有出现文本,那么就认为这一列的所有值都是数字,可以在注册表下面语句处修改为默认值,比如500,但尽量将字符行向前。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
最后完整的函数如下:
public static System.Data.DataTable CallExcel(string FilePath, string sheetName)
{
OleDbConnection con = new OleDbConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FilePath + ';Extended Properties='Excel 8.0;HDR=YES;IMEX=1'');
con.Open();
string sql = 'select * from [' + sheetName + '$]';//[Sheet1$]';////选择第一个数据SHEET
//OleDbCommand command = new OleDbCommand(sql, con);
//OleDbDataReader reader = command.ExecuteReader();
//if (reader.Read())
//{
// reader[0].ToString();//直接读出数据
//}
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, con);
System.Data.DataTable dt = new System.Data.DataTable();
adapter.Fill(dt);
//reader.Close();
//command.Dispose();
con.Close();
con.Dispose();
return dt;
}
相关文章推荐
- 未注册Microsoft.Jet.OLEDB.4.0提供程序或找不到可安装的ISAM的解决办法
- C# EXCEL导入 混合列读取文字为空的解决办法
- 导入Excel表时,提示"找不到可安装的ISAM"问题的解决方法
- ASP打开使用Excel时找不到可安装的ISAM,最好的解决办法
- 在xp安装IIS的时候找不到“Internet信息服务(IIS)”的解决办法。
- 64位操作系统(Windows 2008 R2 X64)安装32位程序Excel/word在Dcom下找不到的解决办法
- 安装Android SDK找不到JDK的解决办法
- MySql安装后在服务管理器里边找不到MySql服务项的解决办法
- 安装Office2007找不到OfficeMUI.msi解决办法
- Linux 下编译安装软件,找不到共享库 xx.so 的解决办法
- 安装sql08命名实例后,服务器中找不到服务器的解决办法
- CentOS 6 最小化安装找不到setup的解决办法
- 2016年以后主板安装win7遇到“找不到驱动程序”解决办法
- iOS_导入libxml2.2框架后,找不到<libxml/tree.h>的解决办法
- 安装程序找不到Windows installer服务的解决办法
- 导入Excel数值读不到,找不到可安装的 ISAM错误!
- jdk安装后 javac找不到 解决办法
- Ubuntu12.04和12.10下H3C iNode客户端安装时出现找不到库的解决办法
- CentOS 6 最小化安装找不到setup的解决办法
- eclipse安装ADT后在windows菜单下找不到android SDK and AVD Manager选项的解决办法