求用Delphi编码实现从Excel导入到数据表中(不限数据库)的程序源码 求用Delphi编码实现从Excel导入到数据表中(不限数据库)的程序,最好能直接读取Excel文件。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Insert into tmptable (记录编号,事件号) SELECT 记录编号,事件号 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) procedure TFrmImportExcel.FlatButton5Click(Sender: TObject);var i,j,DoubleCount,Ord_Qty : integer; EParam,DocuType : OleVariant; wkbk : _WorkBook; sqlstr :string; ExeHandle:Thandle;begin opendialog1.InitialDir:=ExtractFileDir(paramstr(0)); //文件打开的初始路径 if opendialog1.Execute then begin Try ExcelApplication1.Connect; Except msshow('Excel文件打开失败!'); Exit; End; ExcelApplication1.Visible[0]:=False; ExcelApplication1.Caption:='Excel数据文件'; EParam:=EmptyParam; DocuType:=0; try wkBk:=ExcelApplication1.Workbooks.Add(EParam, DocuType); wkBk:=ExcelApplication1.WorkBooks.Open(opendialog1.FileName,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam, EmptyParam,EmptyParam,DocuType,EmptyParam,DocuType); ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);//ExcelWorkbook1与Eexcelapplication1建立连接 ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接 except begin ExcelWorkbook1.Close; //出现异常情况时关闭 ExcelApplication1.Disconnect; ExcelApplication1.Quit; msshow('导入EXCEL数据表格失败!'); exit; end; end; //开始从EXCEL中取数,放到stringgrid中,取完数后关闭EXCEL try for i:=11 to 50 do begin if trim(excelworksheet1.cells.item[i,1])<>'' then begin GroupD.Insert; GroupD.FieldByName('Item_No').AsInteger :=GroupD.RecordCount +1; GroupD.fieldbyname('Single_No').AsString := GroupM.fieldbyname('Single_No').AsString; GroupD.FieldByName('ShipTicketNo').asstring :=GroupD.fieldbyname('Single_No').AsString+'-'+inttostr(GroupD.RecordCount+1); GroupD.FieldbyName('UserName').asstring :=UserName ; GroupD.FieldByName('Luggage').AsInteger :=0; GroupD.FieldByName('Weight').AsInteger :=0; GroupD.FieldByName('IsThrough').AsBoolean :=False ; GroupD.FieldByName('ischk').AsBoolean :=False ; GroupD.FieldByName('IsLeave').AsBoolean :=False ; GroupD.FieldByName('E_Ticket').AsBoolean :=False ; GroupD.FieldByName('Cons').AsBoolean :=False ; GroupD.fieldbyname('OriDate').AsString := GroupM.fieldbyname('OriDate').AsString; GroupD.fieldbyname('OriHB').AsString := GroupM.fieldbyname('OriHB').AsString; GroupD.fieldbyname('Camer').AsString := GroupM.fieldbyname('Camer').AsString; GroupD.fieldbyname('FlightNo').AsString := GroupM.fieldbyname('FlightNo').AsString; GroupD.fieldbyname('Origin').AsString := GroupM.fieldbyname('Origin').AsString; GroupD.fieldbyname('Dest').AsString := GroupM.fieldbyname('Dest').AsString; GroupD.fieldbyname('Type').AsString := GroupM.fieldbyname('Type').AsString; GroupD.fieldbyname('Ticket').AsString := GroupM.fieldbyname('Ticket').AsString; GroupD.fieldbyname('U_Price').AsString := GroupM.fieldbyname('U_Price').AsString; GroupD.fieldbyname('SurName').value:=ExcelWorksheet1.Cells.Item[i,5]; GroupD.FieldByName('GivenName').value :=ExcelWorksheet1.Cells.Item[i,6]; GroupD.FieldByName('PassportNo').value :=ExcelWorksheet1.Cells.Item[i,7]; GroupD.fieldbyname('DateOfBidh').value:=ExcelWorksheet1.Cells.Item[i,8]; GroupD.FieldByName('Nationality').value :=ExcelWorksheet1.Cells.Item[i,9]; GroupD.Post; end end; finally msshow('数据导入完毕!'); end; try ExcelWorkbook1.Close; ExcelApplication1.Disconnect; ExcelApplication1.Quit; EParam :=Unassigned; DocuType :=Unassigned; except end; EndProcess('excel.exe'); { 关闭进程:var H:THandle; P:DWORD;begin H:=FindWindow(pchar('IEFRAME'),nil); //查找窗体 if H<>0 then begin GetWindowThreadProcessId(H,@P); //查找IE进程ID if P<>0 then TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF); //关闭 end;end;end. } end;end; //用JET引擎,使用下面语句INSERT INTO 新建表名 FROM 表名 IN "Excel文件名.xls" "Excel 8.0;" //用JET引擎,使用下面语句INSERT INTO 新建表名 FROM 表名 IN "Excel文件名.xls" "Excel 8.0;" 请教一个问题:定义为pchar类型的变量是不是一定要释放内存 求救IE历史记录读取 delphi+C#高手请进 打印预览高难度问题 誰能幫我實現這個小功能? 80分送上,很好得的. :) ¥¥¥¥怎样让做好的程序在放入光盘后自动运行?¥¥¥¥¥ SocketConnection控件设置代理的属性是哪个 请教 如何实现窗口间的变量传递 关于标点问题,有源码,还有数据库路径的问题~谢了! 小小小的问题? 请问Paradox数据库怎样添加密码? 如何让此前启动的程序置为最前? 如何判断某个COM组件已经注册到我的系统中。
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
var
i,j,DoubleCount,Ord_Qty : integer;
EParam,DocuType : OleVariant;
wkbk : _WorkBook;
sqlstr :string;
ExeHandle:Thandle;
begin
opendialog1.InitialDir:=ExtractFileDir(paramstr(0));
//文件打开的初始路径
if opendialog1.Execute then
begin Try
ExcelApplication1.Connect;
Except
msshow('Excel文件打开失败!');
Exit;
End; ExcelApplication1.Visible[0]:=False;
ExcelApplication1.Caption:='Excel数据文件'; EParam:=EmptyParam;
DocuType:=0;
try
wkBk:=ExcelApplication1.Workbooks.Add(EParam, DocuType); wkBk:=ExcelApplication1.WorkBooks.Open(opendialog1.FileName,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,
EmptyParam,EmptyParam,DocuType,EmptyParam,DocuType); ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveWorkbook);//ExcelWorkbook1与Eexcelapplication1建立连接
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1与Excelworkbook1建立连接 except
begin
ExcelWorkbook1.Close; //出现异常情况时关闭
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
msshow('导入EXCEL数据表格失败!');
exit;
end;
end;
//开始从EXCEL中取数,放到stringgrid中,取完数后关闭EXCEL
try
for i:=11 to 50 do
begin
if trim(excelworksheet1.cells.item[i,1])<>'' then
begin
GroupD.Insert;
GroupD.FieldByName('Item_No').AsInteger :=GroupD.RecordCount +1;
GroupD.fieldbyname('Single_No').AsString := GroupM.fieldbyname('Single_No').AsString;
GroupD.FieldByName('ShipTicketNo').asstring :=GroupD.fieldbyname('Single_No').AsString+'-'+inttostr(GroupD.RecordCount+1);
GroupD.FieldbyName('UserName').asstring :=UserName ;
GroupD.FieldByName('Luggage').AsInteger :=0;
GroupD.FieldByName('Weight').AsInteger :=0;
GroupD.FieldByName('IsThrough').AsBoolean :=False ;
GroupD.FieldByName('ischk').AsBoolean :=False ;
GroupD.FieldByName('IsLeave').AsBoolean :=False ;
GroupD.FieldByName('E_Ticket').AsBoolean :=False ;
GroupD.FieldByName('Cons').AsBoolean :=False ;
GroupD.fieldbyname('OriDate').AsString := GroupM.fieldbyname('OriDate').AsString;
GroupD.fieldbyname('OriHB').AsString := GroupM.fieldbyname('OriHB').AsString;
GroupD.fieldbyname('Camer').AsString := GroupM.fieldbyname('Camer').AsString;
GroupD.fieldbyname('FlightNo').AsString := GroupM.fieldbyname('FlightNo').AsString;
GroupD.fieldbyname('Origin').AsString := GroupM.fieldbyname('Origin').AsString;
GroupD.fieldbyname('Dest').AsString := GroupM.fieldbyname('Dest').AsString;
GroupD.fieldbyname('Type').AsString := GroupM.fieldbyname('Type').AsString;
GroupD.fieldbyname('Ticket').AsString := GroupM.fieldbyname('Ticket').AsString;
GroupD.fieldbyname('U_Price').AsString := GroupM.fieldbyname('U_Price').AsString; GroupD.fieldbyname('SurName').value:=ExcelWorksheet1.Cells.Item[i,5];
GroupD.FieldByName('GivenName').value :=ExcelWorksheet1.Cells.Item[i,6];
GroupD.FieldByName('PassportNo').value :=ExcelWorksheet1.Cells.Item[i,7];
GroupD.fieldbyname('DateOfBidh').value:=ExcelWorksheet1.Cells.Item[i,8];
GroupD.FieldByName('Nationality').value :=ExcelWorksheet1.Cells.Item[i,9];
GroupD.Post;
end
end;
finally
msshow('数据导入完毕!');
end; try
ExcelWorkbook1.Close;
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
EParam :=Unassigned;
DocuType :=Unassigned;
except end; EndProcess('excel.exe'); { 关闭进程:var
H:THandle;
P:DWORD;
begin
H:=FindWindow(pchar('IEFRAME'),nil); //查找窗体
if H<>0 then
begin
GetWindowThreadProcessId(H,@P); //查找IE进程ID
if P<>0 then
TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,P),$FFFFFFFF); //关闭
end;
end;end. }
end;
end;
INSERT INTO 新建表名 FROM 表名 IN "Excel文件名.xls" "Excel 8.0;"
INSERT INTO 新建表名 FROM 表名 IN "Excel文件名.xls" "Excel 8.0;"