请教:ADO连接EXCEL的问题 为什么在ADO连接EXCEL后,这样取表的字段列表有时会出错?cnExcel.GetFieldNames(sTableName, XlsFieldList) ;应该是文件的关系,不知是文件大小还是文件中定义了链接或宏的缘故? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to Dingobin(丁丁历险) 不是很明白,能否详细说说? XlsFieldList为空的。而且很奇怪的是,不是每个EXCEL文件都会这样,而且只要把文件中的该工作表另存为另外的文件也不会出现这问题,不知道这到底是什么问题/ 以下是以前我回答过别人的一些文字,希望对你有帮助。经过摸索,我终于找到了方便快捷的通过jet把excel数据导出方法,我把我的一些经验写出来,希望对后人有帮助.假设有一个excel表d:\在职职工库.xls,簿中有一个表在职职工,其中有如下数据 2002年5月职工花名册序号 姓名 性别 民族 工资 1 张三 男 汉 800.00 2 李四 男 回 1200.00 3 张芸 女 汉 852.00 4 何天荣 男 满 962.00现要把其中的职工数据导出到d:\zghmc.dbf.首先用excel打开d:\在职职工库.xls,选择包含职工数据的区域,不包括标题"2002年5月职工花名册",执行"插入->名称->定义",输入zgk,为所选的数据定义一个名称,关闭excel.如果你的excel表没有标题,完全是一个二维表,就不用定义名称,用adotable连接后设置tabledirect为true,你的excel数据库要有一个字段名,就像其它数据库一样是一个二维表.在project中加入一个ADOConnection1、一个ADOQuery1,添加以下代码:ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\在职职工库.xls;Extended Properties=excel 8.0;Persist Security Info=False';ADOQuery1.Connection:= ADOConnection1;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add('select * into zghmc in "d:\" "dBASE 5.0;" from zgk' );ADOQuery1.ExecSQL;ADOQuery1.Close;然后编译运行,就把excel中的职工数据导出到d:\zghmc.dbf中了。如果要在程序中显示excel中的数据,添加一个ADOTable1,设置Connection为ADOConnection1就可以了. to dejoy(燕青): 请问zgk是怎么设置的?手工?还是由程序设置?我的代码: cnExcel.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=' + AExcelFile + ';' + 'Extended Properties=Excel 8.0;' + 'Persist Security Info=False' ; cnExcel.LoginPrompt := false ; try cnExcel.Open ; except exit ; end; cnExcel.GetFieldNames(sTableName, XlsFieldList) ; 其中:1、AExcelFile为Excel文件名(包含路径); 2、sTableName为Excel文件中第一个工作表名称; 3、cnExcel为ADOConnection; 可能是GetFieldNames有问题吧。还是用ADOCONNECTION获取 cnExcel.GetFieldNames(sTableName, listbox1.Items) ; 或adotable1.Connection:=cnexcel;adotable1.TableDirect:=true;adotable1.GetFieldNames(XlsFieldList);我不知道你的XlsFieldList是一个什么东西. 少了一句adotable1.TableName:='[Sheet1$]'; 谢谢 dejoy(燕青) XlsFieldList :TStringList,应该没什么问题吧。现在奇怪的是,有点文件没有问题,有点文件才会出现这样的问题。真是奇怪! 另外,我想问一下,打开EXCEL文件时如何才能不出现一些是否调用宏之类的提示,谢谢! to zfmich() 打开EXCEL文件时如何才能不出现一些是否调用宏之类的提示:去掉excel文件中的自定义宏或把相应宏进行数字签名有点文件没有问题,有点文件才会出现这样的问题打开excel表要求相应表第一行为字段列表 to fontain() : “去掉excel文件中的自定义宏或把相应宏进行数字签名” 是手工实现?还是程序实现?如果是程序实现?如何处理? 打开excel表要求相应表第一行为字段列表 文件的格式都是一样的啊? 看office帮助,office有个人数字签名软件,只能用于本机。如果第一行不识字段列表,直接用ado打开可能会有问题 怎样判断 Shift 键及 Caps Lock 被按下 有关C/S三层问题 怎样在程序中获得触发器的消息或返还参数? 关于TRzCheckTree控件选中问题 编译错误,为什么系统不能找到'TKeyBuffer'? 请教问题关于组件的???????????? ‘分销’系统是个什么概念?(高分请教)?最好举一些例子? 有关打印监控程序的问题! 为什么CSDN最近速度奇慢,搜索近两周了还不能用!气愤! 一种很麻烦的数据存取方法,求大家帮忙解决一下,急! 这条SQl语句怎样用 Case Where end表达 quickreport报表可以保存为图片格式的?!
不是很明白,能否详细说说?
而且很奇怪的是,不是每个EXCEL文件都会这样,而且只要把文件中的该工作表另存为另外的文件也不会出现这问题,不知道这到底是什么问题/
假设有一个excel表d:\在职职工库.xls,簿中有一个表在职职工,其中有如下数据
2002年5月职工花名册
序号 姓名 性别 民族 工资
1 张三 男 汉 800.00
2 李四 男 回 1200.00
3 张芸 女 汉 852.00
4 何天荣 男 满 962.00现要把其中的职工数据导出到d:\zghmc.dbf.首先用excel打开d:\在职职工库.xls,选择包含职工数据的区域,不包括标题"2002年5月职工花名册",执行"插入->名称->定义",输入zgk,为所选的数据定义一个名称,关闭excel.
如果你的excel表没有标题,完全是一个二维表,就不用定义名称,用adotable连接后设置tabledirect为true,你的excel数据库要有一个字段名,就像其它数据库一样是一个二维表.
在project中加入一个ADOConnection1、一个ADOQuery1,添加以下代码:
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\在职职工库.xls;Extended Properties=excel 8.0;Persist Security Info=False';
ADOQuery1.Connection:= ADOConnection1;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * into zghmc in "d:\" "dBASE 5.0;" from zgk' );
ADOQuery1.ExecSQL;
ADOQuery1.Close;然后编译运行,就把excel中的职工数据导出到d:\zghmc.dbf中了。
如果要在程序中显示excel中的数据,添加一个ADOTable1,设置Connection为ADOConnection1就可以了.
请问zgk是怎么设置的?手工?还是由程序设置?
我的代码:
cnExcel.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source=' + AExcelFile + ';' +
'Extended Properties=Excel 8.0;' +
'Persist Security Info=False' ;
cnExcel.LoginPrompt := false ;
try
cnExcel.Open ;
except
exit ;
end;
cnExcel.GetFieldNames(sTableName, XlsFieldList) ; 其中:1、AExcelFile为Excel文件名(包含路径);
2、sTableName为Excel文件中第一个工作表名称;
3、cnExcel为ADOConnection;
还是用ADOCONNECTION获取
或
adotable1.Connection:=cnexcel;
adotable1.TableDirect:=true;
adotable1.GetFieldNames(XlsFieldList);我不知道你的XlsFieldList是一个什么东西.
adotable1.TableName:='[Sheet1$]';
XlsFieldList :TStringList,应该没什么问题吧。现在奇怪的是,有点文件没有问题,有点文件才会出现这样的问题。真是奇怪!
另外,我想问一下,打开EXCEL文件时如何才能不出现一些是否调用宏之类的提示,谢谢!
打开EXCEL文件时如何才能不出现一些是否调用宏之类的提示:
去掉excel文件中的自定义宏或把相应宏进行数字签名有点文件没有问题,有点文件才会出现这样的问题打开excel表要求相应表第一行为字段列表
“去掉excel文件中的自定义宏或把相应宏进行数字签名”
是手工实现?还是程序实现?如果是程序实现?如何处理? 打开excel表要求相应表第一行为字段列表
文件的格式都是一样的啊?
如果第一行不识字段列表,直接用ado打开可能会有问题