C#用ado.net访问EXCEL的常见问题及解决方法,除了像sql server,access常见的数据库,其实Excel文件也可以做为数据库访问。

ado.net访问excel的实例:

OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = @"provider=Microsoft.jet.oledb.4.0;data source=[excel文件路径];Extended Properties=""Excel 8.0;HDR=YES;"""; cn.Open(); OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", cn); dtCode = new DataSet(); oda.Fill(dtCode); dataGridView1.DataSource = dtCode.Tables[0].DefaultView;

注意:

1、Excel的工作簿名作为表名,如Sheet1书写为[Sheet1$],[]和$都不能省略

2、访问方式为oledb方式,provider=Microsoft.jet.oledb.4.0 ,特别是Extended Properties=""Excel 8.0;HDR=YES;"" 不能省略,省略就错了。HDR=YES表示excel表格的第一行数据作为表的字段名,实际数据从第二行开始。

我在第一次做的时候碰到两个问题。

(1)提示"找不到可安装的ISAM"

这个是由于连接字符串缺少Extended Properties=""Excel 8.0;HDR=YES;"" 导致的。

(2)提示"索引103开始处,初始化字符串的格式不符合规范"

这是由于连接字符串书写错误造成的,请参考正确的格式。这个错误的提示对应的链接字符串如下:

"provider=Microsoft.jet.oledb.4.0;data source=[excel文件路径];Extended Properties=""Excel 8.0;HDR=YES;" 可以看到错误是由于Extended Properties的值是由""括起来的,由于丢失了右边的括号,造成不符合规范。

如果您用的 EXCEL2010,注意连接串需要修改:

strConn = @"Provider=Microsoft.ACE.OLEDB.12.0;" +   @"Data Source=" + excelFilename + ";" +   "Extended Properties=\"Excel 12.0 Xml;HDR=No\"";

 /// <summary>
/// 将CSV转化为DataTable
/// </summary>
/// <param name="strFilePath"></param>
/// <returns></returns>
public static DataTable CSVToDataTable(string strFileFullPath)
{
if (string.IsNullOrEmpty(strFileFullPath))
{
return null;
}
DataTable dt = new DataTable();
try
{
//得到路径
string strFilePath = Path.GetDirectoryName(strFileFullPath);
//得到文件名
string strFileName = Path.GetFileNameWithoutExtension(strFileFullPath);
//读取CSV文件
string connString = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + strFilePath + ";Extensions=asc,csv,tab,txt;";
using (OdbcConnection odbcConn = new OdbcConnection(connString))
{
odbcConn.Open();
OdbcCommand oleComm = new OdbcCommand();
oleComm.Connection = odbcConn;
oleComm.CommandText = "select * from [" + strFileName + "#csv]";
OdbcDataAdapter adapter = new OdbcDataAdapter(oleComm);
adapter.Fill(dt);
dt.TableName = strFileName;
odbcConn.Close();
}
}
catch (Exception)
{
throw;
}
return dt;
}

C#用ado.net访问EXCEL的常见问题及解决方法的更多相关文章

  1. Nacos 常见问题及解决方法

    Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...

  2. NHibernate常见问题及解决方法

    NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...

  3. Windows Server 2008 网站访问PHP响应慢的解决方法

    公司新上了一个网站,但是在配置完PHP环境之后却发现了问题,访问HTML速度飞快,而访问PHP网页时就要卡顿1秒,响应很慢的样子,排除了带宽的因素之后,在百度上搜了一圈竟然解决了,现在将方法转载给大家 ...

  4. 内存或磁盘空间不足 Microsoft Excel无法再次打开解决方法

    在网络上下载的文件,使用EXCEL打开的时候提示“内存或磁盘空间不足,Microsoft Excel 无法再次打开或保存任何文档.”,针对这个问题,装机之家小编特地在网上搜罗了具体解决方法,但是网上提 ...

  5. SQL Server 导出Excel有换行的解决方法

    参考地址::https://vcoo.cc/blog/1234/ 从 SQL Server 查询结果中复制结果数据粘贴到 Excel 中存在这么个问题:如果字段内容中有换行符,那么粘贴到 Excel ...

  6. Windows Server 2008 R2网站访问PHP响应慢的解决方法

    最近换了台新服务器,由于内存是8G的,所以就换了Windows Server 2008 R2 这款系统,虽然有点陌生,但是熟悉了一下感觉性能非常好,但是在配置完PHP环境之后却发现了问题,访问HTML ...

  7. 浅谈Excel开发:九 Excel 开发中遇到的常见问题及解决方法

    Excel开发过程中有时候会遇到各种奇怪的问题,下面就列出一些本人在开发中遇到的一些比较典型的问题,并给出了解决方法,希望对大家有所帮助. 一 插件调试不了以及错误导致崩溃的问题 在开发机器上,有时可 ...

  8. BCP SQL导出EXCEL常见问题及解决方法;数据导出存储过程

    一.‘xp_cmdshell’的启用 SQL Server阻止了对组件‘xp_cmdshell’的过程‘sys.xp_cmdshell’的访问.因为此组件已作为此服务嚣安全配置的一部分而被关 闭.系统 ...

  9. 安装scrapy框架的常见问题及其解决方法

    下面小编讲一下自己在windows10安装及配置Scrapy中遇到的一些坑及其解决的方法,现在总结如下,希望对大家有所帮助. 常见问题一:pip版本需要升级 如果你的pip版本比较老,可能在安装的过程 ...

随机推荐

  1. 【Javascript Demo】根据Email地址跳转到相应的邮箱登录页面

    我的初步想法是通过指定的邮箱地址自动查找到对应的邮箱登录页面,但是用数据库.js什么的都有局限性,因为各种各样的邮箱太多了,不能都包含的到,网上找了半天都没有找到满意的答案,自己又想不出方法,只能暂时 ...

  2. Android实现Material Design风格的设置页面(滑动开关控件)

    前言 本文链接 http://blog.csdn.net/never_cxb/article/details/50763271 转载请注明出处 參考了这篇文章 Material Design 风格的设 ...

  3. C#应用视频教程3.4 Halcon+C#测试

    有了前面的基础后,我们来测试一下如何把程序做的更通用,首先是把初始化的方法修改一下,在初始化的时候传递过去HTuple这个对象(改成了全局的变量,以便于不同的方法调用)   其次需要有相机打开/相机关 ...

  4. windows7系统下升级到IE11时无法使用F12开发人员工具的解决办法

    windows7系统下升级到IE11时,发现F12开发人员工具无法使用,打开都是空白的 解决办法,就是下载IE11的补丁,下载地址为:https://www.microsoft.com/zh-CN/d ...

  5. Swift2.1keyword @noescape介绍

    @noescape优化编译器编译,swift 2.1引入. 函数假设有一个一个參数是closure的话,能够在前面加一个关键字@noescape表示在函数return前closure生命周期结束,能够 ...

  6. java面试第十八天

    软件开发流程: 1.可行性分析 2.需求分析->开发测试 3.概要设计->分隔模块,定义框架等 4.详细设计->类设计.接口设计 5.编码 6.测试 7.部署 8.维护 单元测试: ...

  7. MySQL双主如何解决主键冲突问题

    搭建了个双主,突然想到如果表设置了自增主键的话,当业务同时向双库中插入一条数据,这时候情况是什么样子的呢? 比如:主库A和主库B上的一个表数据为: 12 'ninhao' .当业务同时写入数据后主库A ...

  8. h5 微场景

    兔展: http://www.rabbitpre.com/ 易企秀: http://www.eqxiu.com/site/show 云来: http://www.liveapp.cn/

  9. OpenERP Client Error

    SyntaxError: JSON.parse: unexpected end of data http/mydomain:8069/web/webclient/js:23114 Solutions: ...

  10. 关于free使用注意

    1,free的指针应该是通过 malloc calloc realloc 申请过内存的. 2,free的带有指针元素的结构体时要注意释放结构体的元素指针. 3,对于指向同一块内存的两个或多个指针,如果 ...