先用f1book打开一个excel文件到窗体中,然后有选择的把excel中的某些列(比如上面有A,B,C...等等的列标志)导入到sqlserver2000的某一个表中去,应该怎么做啊??小弟在此多谢了!!最好能有点代码
解决方案 »
- 申請数据库斑竹职务 希望大家支持
- 请问在QUICKREP中如何画虚线啊!
- 如何在adoquery.sql 写两个update语句?
- 请教!我想将程序打包,用了几个小的安装制作软件,都是安装后可以看到源程序,请教各位,怎么办!!
- 我完了,女朋友彻底的跟别人走了,痛苦啊..........
- 请问如何侦听串口?
- b/s多层应用的初级问题,请来看看。
- 一个Flatstyle控件(平面控件)使用问题,也不难。可我不会
- SQL-SERVE救命!!!!!
- XE2 中如何新建Web app Debugger executable
- 点击TreeView的节点后,节点自动变成编辑状态. 如何屏蔽掉这个效果呢?
- idhttp如何读取asp文件中的SESSION和Cookie值呀???
帮不上.
//相关说明: //
// EApp为EXCEL对象 //
// EBook为EXCEL文件对象 //
// ESheet为EXCEL文件页面对象 //
// EBook.Worksheets.Count 描述页数 //
// EBook.Worksheets[页] as _Worksheet 描述指定页 //
// ESheet.UsedRange[LocID].Columns.Count 描述当前页列数 //
// ESheet.UsedRange[LocID].Rows.Count 描述当前页行数 //
// ESheet.Cells.Item[行,列].Value 描述当前页指定单元格值 //
//////////////////////////////////////////////////////////////////// function GetXLS(aFile:String):TStrings; //检索EXCEL文件.
var EApp: TExcelApplication;
EBook: TExcelWorkbook;
ESheet: TExcelWorksheet;
LocID:LCid;
// ExcelApp:Variant;
reStr:TStrings;
i,j,s:Integer;
tmpStr:String;
begin
reStr:=TStringList.Create;
tmpStr:='';
LocID:=GetUserDefaultLCID;
//LocID:=0;
EApp:=TExcelApplication.Create(nil);
EBook:=TExcelWorkbook.Create(nil);
ESheet:=TExcelWorksheet.Create(nil);
Try
Try
Try
EApp.Connect;
EApp.Visible[LocID]:=False;
Except
//不做处理.
LogDataList.Add('***警告***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时,EXCEL OLE对象出现异常,已忽略!');
end;
EApp.Workbooks.Open(aFile,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,LocID);
EBook.ConnectTo(EApp.Workbooks.Item[1] as _Workbook);
//EBook.ConnectTo(EApp.Workbooks.Open(aFile,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,LocID) as _Workbook);
Except
//EApp.Quit; //出问题再次尝试连接
EApp.Disconnect;
EApp.Free;
LogDataList.Add('***警告***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时,EXCEL OLE对象连接异常,已中断重新连接!');
Try
EApp:=TExcelApplication.Create(nil); //重构连接.
LocID:=GetUserDefaultLCID;
EApp.Connect;
EApp.Visible[LocID]:=False;
EApp.Workbooks.Open(aFile,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,LocID);
EBook.ConnectTo(EApp.Workbooks.Item[1] as _Workbook);
Except //再次发生错误,则退出.
LogDataList.Add('***错误***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时出现严重错误:被调用的对象已与其客户断开连接,已跳过!');
MessageBox(Application.Handle,PChar('在提取:'+aFile+'文件时出错,单击确认跳过!'),'错误',MB_ICONERROR+MB_OK);
Result:=reStr;
Exit;
end;
end;
for s:=1 to EBook.Worksheets.Count do begin
ESheet.ConnectTo(EBook.Worksheets[s] as _Worksheet); //设定指定页
MainFrm.RefInit(ESheet.UsedRange[LocID].Rows.Count*ESheet.UsedRange[LocID].Columns.Count);
for i:=1 to ESheet.UsedRange[LocID].Rows.Count do //循环行
for j:=1 to ESheet.UsedRange[LocID].Columns.Count do begin //循环列
if StopFlag then begin
Result:=reStr;
MainFrm.RefInitB;
Exit;
end;
tmpStr:=IsPhone(ESheet.Cells.Item[i,j].Value);
if tmpStr<>'' then begin
//reStr.Add(aStr);
MainFrm.RefSystemA(tmpStr);
end;
end;
ESheet.Disconnect;
end; Except
ON E:Exception DO LogDataList.Add('***错误***:['+TimeToStr(Time())+']'+'在提取:'+aFile+'时,读取单元格出现错误:'+E.Message+',已跳过!');
//ON E:Exception DO ShowMessage(E.Message);
end;
ESheet.Disconnect;
EBook.Disconnect;
EApp.Quit;
EApp.Disconnect;
Result:=reStr;
reStr.Free;
end;
//这是我的遍历XLS文件的方法,应该对你有用吧,取指定行列也可以的.呵呵.
只要先读取选中数据,建立SQL SERVER 数据连接,生成SQL建表脚本,创建一个新的数据表,然后INSERT 数据不就可以了吗?