求教:从EXCEL中提取数据时显示 类型不匹配 是什么原因

jacker001csdn 2006-07-10 10:55:31
很简单的一个测试程序,用来做从EXCEL导入数据到MS SQL SERVER
因为要做字段对应,所以一个一个数据提取,最后POST
运行到最下面那行就出错,而且有.TEXT,和没有.TEXT 都出现相同的错误


adotable1.Close;
adotable1.Fields.Clear;
adotable1.TableName := 'tbl_temptemp';
adotable1.Open;
adotable1.Edit;
progressbar1.Position := 10;

try
excel :=createoleobject('excel.application');
except
progressbar1.Position := 0;

excel.application.quit;

adotable1.Close;
end;

excel.displayalerts :=false;
excel.workbooks.open('D:\kyms\测试060702\10行2.xls',,,);

progressbar1.Position := 20;

adotable1.Append;

//Str(excel.workbooks[s1].worksheets[1].cells.item[2,2],tempstr);
//tempstr := excel.workbooks[s1].worksheets[1].cells.item[2,3];
tempstr := excel.workbooks[s1].worksheets[1].cells.item[2,3].text;
...全文
693 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jacker001csdn 2006-07-11
  • 打赏
  • 举报
回复
谢谢两位
erhan 2006-07-11
  • 打赏
  • 举报
回复
这样是可以的:
Excelid := Null;
try
Excelid:=CreateOleObject( 'Excel.Application' );
except
on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL');
end;

Excelid.Visible := True;
Excelid.workbooks.open('D:\test.xls',,,);
showmessage( Excelid.WorkSheets[1].Cells[1,1].Text);
solokey 2006-07-10
  • 打赏
  • 举报
回复
这样速度很慢的说...直接用ADOConnection + ADOQuery来读取Excel,然后根据你SQL Server的要求,转换成相应的格式导入,这样应该会快很多.
FADOConnection.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;' +
'Data Source=' + FTargetXlsFileName + ';Mode=Share Deny None;Extended Properties="Excel 8.0;IMEX=1";' +
'Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";';
FADOConnection.Open;
FADOQuery.SQL.Text := 'SELECT * FROM [' + FTabSheetName + '$]';

然后利用
ADOQuery.First;
While not ADOQuery.Eof do begin
//.......
ADOQuery.Next;
emd;
jacker001csdn 2006-07-10
  • 打赏
  • 举报
回复
还是不行
ron_xin 2006-07-10
  • 打赏
  • 举报
回复
excel.workbooks[s1].worksheets[1].cells.(2,3)

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧