导入Excel数值读不到,找不到可安装的 ISAM错误!(转)

本文介绍了使用Microsoft Jet OLEDB解决Excel数据读取问题的方法,特别是对于混合类型数据的处理。通过调整连接字符串中的参数,如HDR和IMEX,可以确保正确地读取Excel文件中的所有数据。

string conn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source =" + Server.MapPath("file") + "/" + filename + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";

问题:数据驱动问题,Excel中有一些列是数值,虽然把这个列改为文本存储方式或其它方式,用这种方式读取就是读取不到这些列的数据 (string strCon = @" Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path + ";Extended Properties=Excel 8.0;";),真是奇怪了.试验过修改EXCEL存储方式,格式,然后修改连接串,最后发现原因是数据驱动有问题,改为string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Path + ";Extended Properties ='Excel 8.0;HDR=NO;IMEX=1'"; 就正确了,这里需要大家注意的一个问题'Excel 8.0;HDR=NO;IMEX=1',与Excel 8.0;HDR=NO;IMEX=1的区别,没有'号会一直出现找不到可安装的 ISAM错误! 

  参数说明: 

  Microsoft Jet 提供程序用于连接到 Excel 工作簿。在以下连接字符串中,Extended Properties 关键 

  字设置 Excel 特定的属性。“HDR=Yes;”指示第一行中包含列名,而不是数据,“IMEX=1;”通知驱动程 

  序始终将“互混”数据列作为文本读取。注意 

  http://msdn2.microsoft.com/zh-cn/library/ms254978. aspx 

  默认情况下,系统认为 Excel 数据源的第一行包含可用作字段名的列标题。如果不是这种情况,则必须 

  将该设置关闭,否则,第一行数据将会“消失”,而被用作字段名称。这可通过向连接字符串的扩展属性 

  添加可选的 HDR= 设置来完成。默认情况下(无需指定)是 HDR=Yes。如果没有列标题,则需要指定 

  HDR=No;提供程序将字段命名为 F1、F2 等等。因为扩展属性字符串现在包含了多个值,所以必须用引号 

  单独包起来,如下例所示(为便于看清楚,添加了额外的空格)。 

  如第1个中hdr=no的话,where时就会报错 

  ConnStr ="Driver={Microsoft Excel Driver (*.xls)};Dbq=C:/Inetpub/wwwroot/test.xls; 

  Extended Properties='Excel 8.0;HDR=No;IMEX=1'" 

  Extended Properties参数属性这样写 Excel 5.0;HDR=YES;IMEX=1 

  IMEX=1就是指混合型转换为文本 

  select * from 

  OPENROWSET(’MICROSOFT.JET.OLEDB.4.0′ 

  ,’Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:/book1.xls’,[sheet1$]) 

  1)hdr=yes时可以把xls的第1行作为字段看待,如第1个中hdr=no的话,where时就会报错 

  2)[]和美圆$必须要,否则M$可不认这个账 

  希望对做导入EXCEL功能的人有所帮助!

"访问Excel不到可安装isam"这个错误通常出现在使用ADO.NET连接Excel文件时,特别是在使用Jet OLEDB提供程序时。这个错误表明系统无法到指定的ISAM(Indexed Sequential Access Method)驱动程序。以下是一些可能的原因和解决方法: ### 可能的原因 1. **连接字符串错误**:连接字符串中指定的驱动名称或扩展名不正确。 2. **驱动程序安装**:系统中安装相应的ISAM驱动程序。 3. **文件路径错误**:指定的Excel文件路径不正确。 4. **权限问题**:当前用户没有足够的权限访问Excel文件。 ### 解决方法 1. **检查连接字符串**: 确保连接字符串中的驱动名称和扩展名正确。例如,连接Excel 2007及以上版本的文件时,连接字符串应包含`Excel 12.0 Xml`: ```csharp string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=yourExcelFile.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES\";"; ``` 对于Excel 97-2003文件,使用`Excel 8.0`: ```csharp string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=yourExcelFile.xls;Extended Properties=\"Excel 8.0;HDR=YES\";"; ``` 2. **安装必要的驱动程序**: 确保已安装Microsoft Access Database Engine。可以从[微软官方网站](https://www.microsoft.com/en-us/download/details.aspx?id=54920)下载并安装。 3. **检查文件路径**: 确认连接字符串中指定的文件路径正确且文件存在。 4. **检查权限**: 确认当前用户对目标Excel文件具有取权限。 ### 示例代码 ```csharp using System; using System.Data.OleDb; class Program { static void Main() { string filePath = @"C:\path\to\your\ExcelFile.xlsx"; string connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={filePath};Extended Properties=\"Excel 12.0 Xml;HDR=YES\";"; using (OleDbConnection connection = new OleDbConnection(connectionString)) { try { connection.Open(); Console.WriteLine("Connection successful!"); } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); } } } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值