我想从Excel中把数据导入到SQL Server,但是:
procedure TForm1.btnimportxlsClick();
var
fname,s:string;
i,j:integer;
WorkSheet,WorkBook,MsExcel:variant;
begin
j:=0;
MsExcel := CreateOleObject('Excel.Application');
WorkBook := MsExcel.Application;
if openDialog1.Execute then
begin
Fname:=openDialog1.FileName;
WorkBook.WorkBooks.Open(Fname);
WorkBook.Visible := False;
MsExcel.Visible := true;
WorkSheet := WorkBook.ActiveSheet;
for i:=1 to WorkSheet.UsedRange.Rows.count do
begin
DataModule1.adoquery1.Close;
DataModule1.adoquery1.SQL.Clear;
DataModule1.adoquery1.SQL.Add('select 导出时间 from aaa where 导出时间='+inttostr(WorkSheet.Cells.Item[i,1])); //--就是这里出错!!!
DataModule1.adoquery1.Open;
...
编译时没有问题,但是运行到 那一句时却报“cannot convert variant of Type(Dispatch) into type(integer)”
这是怎么回事?//////////////////////////////////////////
另外,请问要用到TExcelApplication必须USE哪个文件?我很着急,请大侠不吝赐教!谢谢!
procedure TForm1.btnimportxlsClick();
var
fname,s:string;
i,j:integer;
WorkSheet,WorkBook,MsExcel:variant;
begin
j:=0;
MsExcel := CreateOleObject('Excel.Application');
WorkBook := MsExcel.Application;
if openDialog1.Execute then
begin
Fname:=openDialog1.FileName;
WorkBook.WorkBooks.Open(Fname);
WorkBook.Visible := False;
MsExcel.Visible := true;
WorkSheet := WorkBook.ActiveSheet;
for i:=1 to WorkSheet.UsedRange.Rows.count do
begin
DataModule1.adoquery1.Close;
DataModule1.adoquery1.SQL.Clear;
DataModule1.adoquery1.SQL.Add('select 导出时间 from aaa where 导出时间='+inttostr(WorkSheet.Cells.Item[i,1])); //--就是这里出错!!!
DataModule1.adoquery1.Open;
...
编译时没有问题,但是运行到 那一句时却报“cannot convert variant of Type(Dispatch) into type(integer)”
这是怎么回事?//////////////////////////////////////////
另外,请问要用到TExcelApplication必须USE哪个文件?我很着急,请大侠不吝赐教!谢谢!
还有一个问题,怎么获得Excel的sheet,workbooks,application的名称呢?
inttostr(WorkSheet.Cells.Item[i,1].value)
varastype(WorkSheet.Cells.item[1,i],varstring)搞定了!剩余问题是:
怎么获得Excel的sheet,workbooks,application的名称呢?