zoukankan      html  css  js  c++  java
  • C#中使用Sql对Excel条件查询

    如何在C#中实现对Excel的条件查询呢?
    在使用Sql条件语句对Excel进行查询时,遇到“至少一个参数没有被指定值”的问题,如何解决?
    使用OleDbConnection对象创建一个到Excel的连接。
    1、首先,了解一下创建连接时,字符串中的对应参数的含义: 命名空间:System.Data.OleDb
        程序集:System.Data(在 system.data.dll 中)
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'";
        OleDbConnection OleConn = new OleDbConnection(strConn);   OleConn.Open(); 参数解析:
        参数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----链接模式(完全更新能力)
    2、下面开始解决问题:在sql语句中,如果写法不当,就可能无法实现想要的查询结果(DataSet),出现“至少有一个参数没有被指定值”。
        String sql = "SELECT * FROM  [Sheet1$] where F1=7;"; 
         OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);  DataSet OleDsExcel = new DataSet();   OleDaExcel.Fill(OleDsExcel, "Sheet1"); OleConn.Close();  
        注意连接中的:     Extended Properties='Excel 8.0;HDR=Yes;的写法
        如果写成 Extended Properties='Excel 8.0;HDR=Yes;' 即第一行作为列标题,可以指定字段名 例如 String sql = "SELECT * FROM  [Sheet1$] where Order=7;";  
        如果写成 Extended Properties='Excel 8.0;HDR=No;' 则只能指定F1,F2作为字段名 例如     String sql = "SELECT * FROM  [Sheet1$] where F1=7;"

    注意:(1)是否在连接中将第一行设置为列标题;
    (2)还有对应列的数据类型要一致,如果不一致也有可能导致查询结果出错。(尤其是在第一行不是列标题的时候)
    【注:本文只是针对本人遇到的问题做了整理,看到网上很多人问同样的问题,发出来供大家参考,不保证对所有的都有效】

  • 相关阅读:
    Win8系统 Python安装
    一些安卓开源框架整理
    Android 媒体键监听以及模拟媒体键盘的实现 demo
    android View 自动 GONE 问题
    Android 定时器TimerTask 简单使用
    关于Android studio 相对 eclipse 优点
    Java序列化与反序列化
    android shape的使用 边框
    Android Studio 修改 包名 package name
    Android WebView Long Press长按保存图片到手机
  • 原文地址:https://www.cnblogs.com/hs8888/p/6169811.html
Copyright © 2011-2022 走看看