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导入 混合列文字为空,找不到可安装的 ISAM的解决办法,布布扣,bubuko.com
C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法
原文地址:http://www.cnblogs.com/IcefishBingqing/p/3721450.html