我的窗体中放置有:
ADOQuery1、Button1、DataSource1、DBGrid1
并这样建立联接关系:
DataSource.DateSet:=ADOQuery1;
DBGrid1.DataSource:=DataSource1;代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
str,sqlstr,connstr,sheetName,filename:string;
begin
filename :='C:\Documents and Settings\Sampson\桌面\Book2.xls' ; //文件名
sheetName:='sheet1'; //表名 ADOQuery1.Close ;
ADOQuery1.SQL.Clear ;
ConnStr :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';Extended Properties=Excel 8.0;Persist Security Info=False';
ADOQuery1.ConnectionString :=ConnStr ;
SqlStr :='Select * from ' +'[' +SheetName + '$'+']';
ADOQuery1.SQL.Add(SqlStr) ;
ADOQuery1.Prepared:=false ;
ADOQuery1.Open ;end;当运行程序后,按下Button1
DBGrid1里显没有Excel表中的第一行记录,查看ADOQuery1.Recordset.RecordCount的总行数也比Excel表中的总行数少一行.同时在DBGrid1的字段位置的第一个字段的名称是Excel表中的A1数据,但第二个字段的名称不是Excel表是的A2数据而是显示"F2",究竟这个"F2"是表示什么呢,我也搞不清楚.
并且有时会出现 A1和B1并不是为同一条记录.就这个情况,我想解决的问题是:
怎样用ADOQuery1完整地读取Excel表中所有数据,当然要包括Excel中表的第一行,并且总行数相等,数据要一行一行地对应,即
A1 B1
A2 B2
A3 B3
ADOQuery1、Button1、DataSource1、DBGrid1
并这样建立联接关系:
DataSource.DateSet:=ADOQuery1;
DBGrid1.DataSource:=DataSource1;代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
str,sqlstr,connstr,sheetName,filename:string;
begin
filename :='C:\Documents and Settings\Sampson\桌面\Book2.xls' ; //文件名
sheetName:='sheet1'; //表名 ADOQuery1.Close ;
ADOQuery1.SQL.Clear ;
ConnStr :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FileName + ';Extended Properties=Excel 8.0;Persist Security Info=False';
ADOQuery1.ConnectionString :=ConnStr ;
SqlStr :='Select * from ' +'[' +SheetName + '$'+']';
ADOQuery1.SQL.Add(SqlStr) ;
ADOQuery1.Prepared:=false ;
ADOQuery1.Open ;end;当运行程序后,按下Button1
DBGrid1里显没有Excel表中的第一行记录,查看ADOQuery1.Recordset.RecordCount的总行数也比Excel表中的总行数少一行.同时在DBGrid1的字段位置的第一个字段的名称是Excel表中的A1数据,但第二个字段的名称不是Excel表是的A2数据而是显示"F2",究竟这个"F2"是表示什么呢,我也搞不清楚.
并且有时会出现 A1和B1并不是为同一条记录.就这个情况,我想解决的问题是:
怎样用ADOQuery1完整地读取Excel表中所有数据,当然要包括Excel中表的第一行,并且总行数相等,数据要一行一行地对应,即
A1 B1
A2 B2
A3 B3
解决方案 »
- 奇怪的问题,熟悉VCL的帮忙解释下!!!!
- Delphi 查询Sysbase 是正常的,但提交数据后就成了乱码.怎么修正. 立刻给分.
- API中的LARGE_INTEGER 在delphi中是什么类型??
- 如何将某文本文件中的内容全部清除?
- 如何用delphi制作抽屉程序
- 帮帮忙啊!请问哪里有这样的组件下载呀??
- 文件压缩解压问题。急!!!
- Image的问题,100分给能解决我问题的人。(注:加上我另一个提问共100)
- 帮忙看一下
- 如何使应用程序中的窗口改变样式,比如像‘WINXP’中的窗口,比如像‘东方音都’的窗口!!
- WebBrowser 怎么向dreamweaver做成的网页传递数据
- 记录定位问题,跪求达人赐教,急!!!
解决方法
方法1、在Excel的首行再插入一行(该行为对应数据表得字段名)
方法2、直接连接后表得字段名(通过字段名来获取第一条数据)
另外:如果你通过其他方式(如sqlserver自带的工具试试)将excel导成table,查看一下,是否也丢了第一行数据?
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="D:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]这个语句可以读出excel,注意的是他自动把excel第一行当作字段名.
解决方法
方法1、在Excel的首行再插入一行(该行为对应数据表得字段名)
方法2、直接连接后表得字段名(通过字段名来获取第一条数据)
另外:如果你通过其他方式(如sqlserver自带的工具试试)将excel导成table,查看一下,是否也丢了第一行数据?
正解