窗体上拖放ADOQuery1,DataSetProvider1,DataSource1,ClientDataSet1,OpenDialog1,

ExcelApplication1,ExcelWorkbook1,ExcelWorksheet1控件。

Function TForm1.ADOOpenExls:Boolean;
var
  connstr,FirstSheetName: String;
begin
  // ADO读取EXCEL文件方法.
  Result := False;

DataSetProvider1.DataSet := ADOQuery1;

DataSource1.DataSet := ClientDataSet1;

try

OpenDialog1.Filter := 'Excel文档(*.xlsx)|*.xlsx|Excel文档(*.xls)|*.xls';
  OpenDialog1.InitialDir := 'C:\';
  OpenDialog1.Title := '选择导入Excel文件' ;
  OpenDialog1.DefaultExt := 'xlsx';
  if OpenDialog1.Execute then
  begin
    ExcelApplication1.Connect;
    ExcelApplication1.Caption := 'App Import Excel';
    ExcelApplication1.Workbooks.Open(OpenDialog1.FileName,False,
        False,EmptyParam,EmptyParam,EmptyParam,True,EmptyParam,EmptyParam,
        EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);
    ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
    //EXCEL文件的第一个SHEET表单名称.
    FirstSheetName := ExcelWorksheet1.Name;
    //关闭Excel文件.
    ExcelWorkbook1.Close;
    ExcelApplication1.Quit;
    ExcelApplication1.Disconnect;
    with ADOQuery1 do
    begin
      Close;
      connstr := 'Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;'
        +'Data Source=%s;Persist Security Info=False;';
      connstr := Format(connstr, [OpenDialog1.FileName]);
      ConnectionString := connstr;
      SQL.Clear;
      //Sheet名称后缀必须添加$.
      SQL.Add(Format('SELECT * FROM [%s$]',[FirstSheetName]));
      Open;

ClientDataSet1.Close;
      ClientDataSet1.Fields.Clear;
      ClientDataSet1.Data := DataSetProvider1.Data;
      Close;

{

cxGrid1DBTableView1.DataController.DataSource :=  DataSource1;

cxGrid1DBTableView1.ClearItems;  //在GRID中展示数据.

cxGrid1DBTableView1.DataController.CreateAllItems(True);
      cxGrid1DBTableView1.ApplyBestFit();

}
      Result := True;
    end;
  end;
  except
    ON E :Exception do
    begin
      ADOQuery1.Close;
      ExcelApplication1.Quit;
      ExcelApplication1.Disconnect;
      ShowMessage(E.Message);
    end;
  end;
end;

ADO读取EXCEL的更多相关文章

  1. ADO.NET 读取Excel文件,并作数据源

    项目中需要用的功能,贴上代码了. 需要注意的地方:配置Web.config的时候要注意版本问题! //若是在Web.config中配置数据源,如下 <add key="ExcelCon ...

  2. .Net读取Excel文件时丢失数据的问题 (转载)

    相信很多人都试过通过OleDB读取Excel文件,这种方法效率十分高,只是有一点会让人十分头痛,就是当一列中既有混合型数据,又有纯数据时,往往容易丢失数据. 百度过后,改连接字符串 “HDR=YES; ...

  3. ado.net excel 模版

    ado.net excel 模版 private static void Excute()        {            while (true)            {          ...

  4. NPOI读取Excel数据应用

    NPOI 是 POI 项目的 .NET 版本.使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL 文档进行读写.NPOI是构建在POI 3.x版本之上的,它 ...

  5. C#中Form窗体中读取EXCEL的数据

    使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可 首先引用Microsoft.EXEL 代码如下: using System; using System.Colle ...

  6. 基于.NET的程序读取Excel文件的解决方案

    目录 0. 前言 1. 使用NPOI库读取Excel文件 2. 使用OleDbConnection 3. 相关参考 shanzm-2020年12月8日 23:48:11 0. 前言 以前基于 .NET ...

  7. java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 ...

  8. poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算

    /** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...

  9. C#读取Excel,或者多个excel表,返回dataset

    把excel 表作为一个数据源进行读取 /// <summary> /// 读取Excel单个Sheet /// </summary> /// <param name=& ...

随机推荐

  1. oracle 非数字型转数字型

    原文:oracle 非数字型转数字型 oracle中如果一个字段内容不全是数字型 可以通过以下方式过滤 to_number(substr(translate(a.vital_signs_cvalues ...

  2. 【android】WebView缓存数据收集

    Android WebView 缓存 Android高手进阶教程(二十四)之---Android WebView的缓存!!! Android webView 缓存 Cache + HTML5离线功能 ...

  3. 自动编译CoffeeScript的Gruntfile.js

    比如把coffee文件写在coffee/controller/文件夹下,新建js/controller文件夹,使用grunt运行项目,将自动编译coffee到相应的js文件夹下. module.exp ...

  4. AutoCAD 2012安装错误,与.net framework (1603错误)以及ms2005vc++的问题。

    首先,这是AutoCAD2012的问题.因为,如果一台计算机已经安装了这些软件,AutoCAD是无法识别出来,因此AutoCAD就只能报错.正确的做法是:如果检测到这些软件已经被安装,则需要忽略这些问 ...

  5. SQL点滴15—在SQL Server 2008中调用C#程序

    原文:SQL点滴15-在SQL Server 2008中调用C#程序 T-SQL的在执行普通的查询的时候是很高效的,但是在执行循环,判断这样的语句的时候效率就不那么的高了.这时可以借助CLR了,我们可 ...

  6. [译]内存中的Java数组是怎么样的

    (文章翻译自What does a Java array look like in memory?) Java中的数组存储了两个中的一个类型:原始类型的类或则是引用类型(比如指针) 当一个对象通过Ne ...

  7. 手机发送短信JS验证

    function tj() { var phone = jQuery('#phone').val(); var code = jQuery('#verificationcode').val(); va ...

  8. js 指定位置插入html标签(可编辑div)

    demo效果如下: html代码部分如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q ...

  9. 终于有人把O2O、C2C、B2B、B2C的区别讲透了!

    终于有人把O2O.C2C.B2B.B2C的区别讲透了! 一.O2O.C2C.B2B.B2C的区别在哪里? O2O是online to offline分为四种运营模式: 1.online to offl ...

  10. 如果gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧

    如果著名的gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧: 万千合集站 http://www.hejizhan.com/ 里面除了镜像索引了gen.lib.rus.ec上的所有英文 ...