如何将Excel数据导入Access数据库? 给一段代码 如何将Excel数据导入Access数据库?, 表名:crk 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 excel可以直接作为数据库操作使用ADO然后搞进去 procedure TExInput.Excel1Click(Sender: TObject); //实现Excel导入SQLvar sTableName, ErrInfo: string;varTableName,CBMonth ,sqlStr:String;begin TableName :='BCTZ'+ComboBoxYear.Text+ComboBoxMonth.Text; sqlStr:='create table BCTZ'+ComboBoxYear.Text+ComboBoxMonth.Text+'( BmNo char(20),RsNo char(20),TzRq char(20), BcNo char(20), Name char(20), BmMc char(20))'; ADOQuery1.sql.clear; ADOQuery1.sql.add(sqlStr); ADOQuery1.execsql; try ADOConn.Connected := False; ADOConn.ConnectionString := Format(context, [Trim(edtPasswd.Text), Trim(edtUser.Text), Trim(edtServerName.Text), Trim(edtServerIP.Text)]); ADOConn.Connected := True; except Application.MessageBox('数据库连接出错! ', '提示信息', MB_OK or MB_ICONERROR); Abort; end; OpenDialog1.DefaultExt := 'xls'; OpenDialog1.Filter := 'Excel File|*.xls'; OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName); if OpenDialog1.Execute then begin ADOCommand1.ConnectionString := Format(SExcelText, [OpenDialog1.FileName]); try sTableName :='BCTZ'+ComboBoxYear.Text+ComboBoxMonth.Text;// Trim(edtTableName.Text); ExcuteSQL(adoQuery, 'delete from ' + sTableName); ADOCommand1.CommandText := 'insert into ' + sTableName + ' IN [ODBC]' + ' [ODBC; Driver=SQL Server; UID=' + ADOConn.Properties['User ID'].Value + '; PWD=' + ADOConn.Properties['Password'].Value + '; Server=' + ADOConn.Properties['Data Source'].Value + '; DataBase=' + ADOConn.Properties['Initial Catalog'].Value + ';] select * from [Sheet1$]';Source="C:\temp\Temp.xls";Extended Properties="Excel 5.0;HDR=Yes;";Persist Security Info=False'')...sheet1$' ADOCommand1.Execute; ADOCommand1.ConnectionString := ''; except ErrInfo := '导入数据时出错!'; //导入数据时出错! Application.MessageBox('导入数据时出错!', '提示信息', MB_OK or MB_ICONERROR); Exit; end; if ErrInfo = '' then begin Application.MessageBox('导入数据已完成!', '提示信息', MB_OK or MB_ICONINFORMATION); //导入数据已完成! end; end;end;连接的SQL,将以上链接改成access试验一下 从自己的代码中拿一段出来,作参考喔.procedure TForm1.Button3Click(Sender: TObject);var filename,path:string; Excelapp:variant; tstr,ssqname,num1,num2,num3,num4,num5,num6,num7:String; ado1:TADOQuery; pc:string; SysTime: TsystemTime;beginpath:=ExtractFilePath(application.ExeName);fileName:='';opendialog1.FileName:='';opendialog1.Execute;if opendialog1.FileName='' then Exit;Excelapp:=CreateOleObject('Excel.Application');filename:=opendialog1.FileName;Dbgrid1.Cursor:=crHourGlass;Excelapp.workBooks.Open(FileName);num1:='0';num2:='';num3:='';num4:='';num5:='';num6:='';num7:='';ssqname:='0';ado1:=TADOQuery.Create(self);ado1.Connection:=ADOQuery1.Connection;//写入批次表,方便删除GetSystemTime(SysTime);pc:=IntToStr(SysTime.wYear)+IntToStr(SysTime.wMonth)+IntToStr(SysTime.wDay)+IntToStr(SysTime.wHour)+IntToStr(SysTime.wMinute)+IntToStr(SysTime.wSecond);adoConnection1.Execute('INSERT INTO tbpc(fd_pc_name)values('+pc+')');adoConnection1.Execute('delete from tb6_tmp');adoConnection1.Execute('INSERT INTO tb6_tmp(fd_tssq_name,fd_tssq_num1,fd_tssq_num2,fd_tssq_num3,fd_tssq_num4,fd_tssq_num5,fd_tssq_num6,fd_tssq_num7)' + 'SELECT 期号,红球1,红球2,红球3, 红球4,红球5,红球6,蓝球' + ' FROM [excel 8.0;database=' + fileName+ '].[Sheet1$] where 期号<>NULL');adoConnection1.Execute('update tb6_tmp set fd_tssq_pc='+pc);adoConnection1.Execute('INSERT INTO tb6(fd_ssq_name,fd_ssq_num1,fd_ssq_num2,fd_ssq_num3,fd_ssq_num4,fd_ssq_num5,fd_ssq_num6,fd_ssq_num7,fd_ssq_pc)' + 'SELECT fd_tssq_name,fd_tssq_num1,fd_tssq_num2,fd_tssq_num3,fd_tssq_num4,fd_tssq_num5,fd_tssq_num6,fd_tssq_num7,fd_tssq_pc from tb6_tmp' ); with ado1 do begin close(); sql.Clear; sql.Text:='select * from tb6_tmp'; open(); first; while(NOT ado1.Eof) do begin ssqname:=ado1.Fieldbyname('fd_tssq_name').AsString; num1:=ado1.Fieldbyname('fd_tssq_num1').AsString; num2:=ado1.Fieldbyname('fd_tssq_num2').AsString; num3:=ado1.Fieldbyname('fd_tssq_num3').AsString; num4:=ado1.Fieldbyname('fd_tssq_num4').AsString; num5:=ado1.Fieldbyname('fd_tssq_num5').AsString; num6:=ado1.Fieldbyname('fd_tssq_num6').AsString; num7:=ado1.Fieldbyname('fd_tssq_num7').AsString; tstr:=''; tstr:='fd_bssq_num'+num1+',fd_bssq_num'+num2+',fd_bssq_num'+num3+',fd_bssq_num'+num4+',fd_bssq_num'+num5; tstr:=tstr+',fd_bssq_num'+num6+',fd_bssq_bn'+num7+',fd_bssq_name,fd_bssq_pc' ; if(num1<>'') then begin try adoConnection1.Execute('INSERT INTO tb32('+tstr+')values(1,1,1,1,1,1,1,'+ssqname+','+pc+')'); except end; end; next(); end; end ;ado1.Free;Excelapp.workBooks.close;Excelapp.Quit;Excelapp:=unassigned;readrec100();EndProcess('EXCEL.exe');Dbgrid1.Cursor:=crDefault;messagebox(application.Handle,pchar('导入完成!批次号:'+pc+'。'),pchar('提示'),MB_OK+MB_ICONINFORMATION);end; 放一个button控件代码如下procedure TForm1.RzBitBtn1Click(Sender: TObject);var i:integer; excela:string; excelb:string; excelc:string; exceld:string; ExcelApp,workbook,ExcelRowCount:oleVariant;begin if RzOpenDialog1.Execute then begin try ExcelApp:=CreateOleObject('Excel.Application'); WorkBook := ExcelApp.WorkBooks.Open(RzOpenDialog1.FileName);//使用opendialog对话框指定 ExcelApp.Visible := false; ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count; ADOQuery1.Open; for i := 2 to excelrowcount + 1 do begin excela:=ExcelApp.cells[i,1].value; excelb:=ExcelApp.cells[i,2].value; excelc:=ExcelApp.cells[i,3].value; exceld:=ExcelApp.cells[i,4].value; ADOQuery1.Append; ADOQuery1.FieldByName('FullName').asstring:=excela; ADOQuery1.FieldByName('Date').asstring := excelb; ADOQuery1.FieldByName('ComeTime').asstring := excelc; ADOQuery1.FieldByName('GoTime').AsString:= exceld; ADOQuery1.post; ADOQuery1.UpdateBatch; end; showmessage('导入数据成功!') finally WorkBook.Close; ExcelApp.Quit; ExcelApp := Unassigned; WorkBook := Unassigned; end; end;end; delphi 生成报表打印预览 关于数据表的操作,希望大家帮我一下 关于按回车键后,打开某窗体的难题?(高手帮忙) 关于SSL传输加密的实现?? 请高手进来!! dvd格式如何转换成rm或mpeg格式? fastreport中如何对齐筐架线? 如何返回光标的所在位置的行号和列号? always on top 求友 DBGrid的column的buttontype设为cbsEllipsis; 请把以下C++变量的定义和处理翻译为DELPHI 读取TXT文件内容问题
使用ADO然后搞进去
procedure TExInput.Excel1Click(Sender: TObject); //实现Excel导入SQL
var
sTableName, ErrInfo: string;
var
TableName,CBMonth ,sqlStr:String;
begin
TableName :='BCTZ'+ComboBoxYear.Text+ComboBoxMonth.Text;
sqlStr:='create table BCTZ'+ComboBoxYear.Text+ComboBoxMonth.Text+'( BmNo char(20),RsNo char(20),TzRq char(20), BcNo char(20), Name char(20), BmMc char(20))';
ADOQuery1.sql.clear;
ADOQuery1.sql.add(sqlStr);
ADOQuery1.execsql;
try
ADOConn.Connected := False;
ADOConn.ConnectionString := Format(context, [Trim(edtPasswd.Text), Trim(edtUser.Text), Trim(edtServerName.Text), Trim(edtServerIP.Text)]);
ADOConn.Connected := True;
except
Application.MessageBox('数据库连接出错! ', '提示信息', MB_OK or MB_ICONERROR);
Abort;
end; OpenDialog1.DefaultExt := 'xls';
OpenDialog1.Filter := 'Excel File|*.xls';
OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName);
if OpenDialog1.Execute then
begin
ADOCommand1.ConnectionString := Format(SExcelText, [OpenDialog1.FileName]);
try
sTableName :='BCTZ'+ComboBoxYear.Text+ComboBoxMonth.Text;// Trim(edtTableName.Text); ExcuteSQL(adoQuery, 'delete from ' + sTableName);
ADOCommand1.CommandText := 'insert into ' + sTableName + ' IN [ODBC]'
+ ' [ODBC; Driver=SQL Server; UID=' + ADOConn.Properties['User ID'].Value + '; PWD=' + ADOConn.Properties['Password'].Value
+ '; Server=' + ADOConn.Properties['Data Source'].Value + '; DataBase='
+ ADOConn.Properties['Initial Catalog'].Value + ';] select * from [Sheet1$]';
Source="C:\temp\Temp.xls";Extended Properties="Excel 5.0;HDR=Yes;";Persist Security Info=False'')...sheet1$'
ADOCommand1.Execute;
ADOCommand1.ConnectionString := '';
except
ErrInfo := '导入数据时出错!'; //导入数据时出错!
Application.MessageBox('导入数据时出错!', '提示信息', MB_OK or MB_ICONERROR);
Exit;
end;
if ErrInfo = '' then
begin
Application.MessageBox('导入数据已完成!', '提示信息', MB_OK or MB_ICONINFORMATION); //导入数据已完成!
end;
end;
end;
连接的SQL,将以上链接改成access试验一下
procedure TForm1.Button3Click(Sender: TObject);
var filename,path:string;
Excelapp:variant;
tstr,ssqname,num1,num2,num3,num4,num5,num6,num7:String;
ado1:TADOQuery;
pc:string;
SysTime: TsystemTime;
begin
path:=ExtractFilePath(application.ExeName);
fileName:='';
opendialog1.FileName:='';
opendialog1.Execute;
if opendialog1.FileName='' then Exit;
Excelapp:=CreateOleObject('Excel.Application');
filename:=opendialog1.FileName;
Dbgrid1.Cursor:=crHourGlass;
Excelapp.workBooks.Open(FileName);
num1:='0';num2:='';num3:='';num4:='';num5:='';num6:='';num7:='';ssqname:='0';
ado1:=TADOQuery.Create(self);
ado1.Connection:=ADOQuery1.Connection;//写入批次表,方便删除
GetSystemTime(SysTime);
pc:=IntToStr(SysTime.wYear)+IntToStr(SysTime.wMonth)+IntToStr(SysTime.wDay)+IntToStr(SysTime.wHour)+IntToStr(SysTime.wMinute)+IntToStr(SysTime.wSecond);
adoConnection1.Execute('INSERT INTO tbpc(fd_pc_name)values('+pc+')');
adoConnection1.Execute('delete from tb6_tmp');
adoConnection1.Execute('INSERT INTO tb6_tmp(fd_tssq_name,fd_tssq_num1,fd_tssq_num2,fd_tssq_num3,fd_tssq_num4,fd_tssq_num5,fd_tssq_num6,fd_tssq_num7)' + 'SELECT 期号,红球1,红球2,红球3, 红球4,红球5,红球6,蓝球' +
' FROM [excel 8.0;database=' + fileName+ '].[Sheet1$] where 期号<>NULL');
adoConnection1.Execute('update tb6_tmp set fd_tssq_pc='+pc);
adoConnection1.Execute('INSERT INTO tb6(fd_ssq_name,fd_ssq_num1,fd_ssq_num2,fd_ssq_num3,fd_ssq_num4,fd_ssq_num5,fd_ssq_num6,fd_ssq_num7,fd_ssq_pc)' + 'SELECT fd_tssq_name,fd_tssq_num1,fd_tssq_num2,fd_tssq_num3,fd_tssq_num4,fd_tssq_num5,fd_tssq_num6,fd_tssq_num7,fd_tssq_pc from tb6_tmp' ); with ado1 do
begin
close();
sql.Clear;
sql.Text:='select * from tb6_tmp';
open(); first; while(NOT ado1.Eof) do
begin ssqname:=ado1.Fieldbyname('fd_tssq_name').AsString;
num1:=ado1.Fieldbyname('fd_tssq_num1').AsString;
num2:=ado1.Fieldbyname('fd_tssq_num2').AsString;
num3:=ado1.Fieldbyname('fd_tssq_num3').AsString;
num4:=ado1.Fieldbyname('fd_tssq_num4').AsString;
num5:=ado1.Fieldbyname('fd_tssq_num5').AsString;
num6:=ado1.Fieldbyname('fd_tssq_num6').AsString;
num7:=ado1.Fieldbyname('fd_tssq_num7').AsString;
tstr:='';
tstr:='fd_bssq_num'+num1+',fd_bssq_num'+num2+',fd_bssq_num'+num3+',fd_bssq_num'+num4+',fd_bssq_num'+num5;
tstr:=tstr+',fd_bssq_num'+num6+',fd_bssq_bn'+num7+',fd_bssq_name,fd_bssq_pc' ;
if(num1<>'') then
begin
try
adoConnection1.Execute('INSERT INTO tb32('+tstr+')values(1,1,1,1,1,1,1,'+ssqname+','+pc+')');
except
end;
end;
next();
end; end ;
ado1.Free;
Excelapp.workBooks.close;
Excelapp.Quit;
Excelapp:=unassigned;
readrec100();
EndProcess('EXCEL.exe');
Dbgrid1.Cursor:=crDefault;
messagebox(application.Handle,pchar('导入完成!批次号:'+pc+'。'),pchar('提示'),MB_OK+MB_ICONINFORMATION);
end;
代码如下
procedure TForm1.RzBitBtn1Click(Sender: TObject);
var
i:integer;
excela:string;
excelb:string;
excelc:string;
exceld:string;
ExcelApp,workbook,ExcelRowCount:oleVariant;
begin
if RzOpenDialog1.Execute then
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
WorkBook := ExcelApp.WorkBooks.Open(RzOpenDialog1.FileName);//使用opendialog对话框指定
ExcelApp.Visible := false;
ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
ADOQuery1.Open;
for i := 2 to excelrowcount + 1 do
begin
excela:=ExcelApp.cells[i,1].value;
excelb:=ExcelApp.cells[i,2].value;
excelc:=ExcelApp.cells[i,3].value;
exceld:=ExcelApp.cells[i,4].value;
ADOQuery1.Append;
ADOQuery1.FieldByName('FullName').asstring:=excela;
ADOQuery1.FieldByName('Date').asstring := excelb;
ADOQuery1.FieldByName('ComeTime').asstring := excelc;
ADOQuery1.FieldByName('GoTime').AsString:= exceld;
ADOQuery1.post;
ADOQuery1.UpdateBatch;
end;
showmessage('导入数据成功!')
finally
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
WorkBook := Unassigned;
end;
end;
end;