首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

各位一个有关问题

2013-09-06 
求助各位大虾一个问题我通过以下的方法,连接了一个Demo.excel文件第一部分: 1. 设置ADOConnection的Connec

求助各位大虾一个问题
我通过以下的方法,连接了一个Demo.excel文件

第一部分:
 
1. 设置ADOConnection的ConnectionString属性的OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider(这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件),按 "下一步"按钮
 2. 选择数据库名称。注意:Excel的扩展名是*.xls,而默认文件类型是Microsoft Access 数据库(*.mdb), 我们就选择"全部文件(*.*)"吧,接着选择我们要连接的Excel文件咯!!如果在当前路径,就直接填2007.xls。  这时先别慌按 "测试连接"按钮,不然会出现错误对话框的。可以试试看,了解一下 ^_^
 3. 在"所有"选项卡中找到 "Extended Properties",双击它或者按"编辑值"按钮,设置Extended Properties为"Excel 8.0 "。
 4. 我们返回"连接"选项卡,按 "测试连接"按钮。测试连接成功!!! ^_^ 
  最后,设置完成后的ConnectionString中的各项参数为:
    Provider=Microsoft.Jet.OLEDB.4.0
    Data Source=2007.xls    //因为在当前路径
    Extended Properties=Excel 8.0
    Persist Security Info=False
 
第二部分:
 
接着就用ADOTable,ADODataSet和ADOQuery连接到刚才的ADOConnection,当然你可以直接设置ADOTable,ADODataSet或ADOQuery的ConnectionString属性。
 1. ADOTable设置:
  a. ADOTable的TableName属性值:系统自动生成Excel的Sheet1$,Sheet2$和Sheet3$。直接Active设置成true,系统会报告SQL语句格式错误等信息。
  b. 找到TableDirect属性,设置为True。因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。接着将Active设置成true。成功了!! ^_^
  c. 可以不使用TableDirect属性,将TableName属性中的Sheet1$,Sheet2$和Sheet3$分别改成[Sheet1$],[Sheet2$]和[Sheet3$]。   对,就是加"[]"就行了。
 2. ADODataSet设置:
  a. 只需要将CommandType属性设置为cmdTableDirect,选择工作表,Active设置成true就成功了。
  b. 也可以将CommandType属性设置为cmdTable,将CommandText属性中改成[Sheet1$],[Sheet2$]和[Sheet3$]。
3. ADOQuery设置:
  SQL属性如下:
  select * from [sheet1$]

我求助的问题就是,怎么在这个工作表表格中的某一个单元格输入内容,请大虾给出一个完整简单的例子。不胜感激!
[解决办法]
请看下列示例代码,用ADOQuery,先建表,然后编辑数据就可:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    Button1: TButton;


    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('create table [Sheet1$] (ID int,Name varchar(20))');
  ADOQuery1.ExecSQL;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('select * from [Sheet1$]');
  ADOQuery1.Open;
  ADOQuery1.Edit;
  ADOQuery1.FieldByName('ID').AsInteger := 123;
  ADOQuery1.FieldByName('Name').AsString := 'Abcdefg';
  ADOQuery1.Post;
  ADOQuery1.Close;
end;

end.

热点排行