这是我第一次写博客,他将会记录我学习中遇到的困难与解决办法,也是证明我成长的见证者。(Butter Fly)
我也经常看别人的博客,有的真是看不懂,不是写的不好,写的真是太简洁了。我会尽量写清楚,谢谢。
思路
- 读取Excel文件
- 将Excel每列与字段一一对应
- 执行sql
插入控件
- TOpenDialog (打开文件的控件)
源码
procedure TMain.RzBitBtn4Click(Sender: TObject);
const
BeginRow=1; // lie
BeginClo=2; // hang
var
iRE:Integer;
iRow,iCol:Integer;
MsExcel,MsExcelWorkBook,MsExcelWorkSheet:Variant;
sqlstr1,sqlstr2:string;
sql1,sql2,sql3:string;
a,b,c,d,e,f,g,h,i,j,k,l,m:string;
begin
try
dlgOpen1.FileName:='*.xls';
if not dlgOpen1.Execute then
begin
Exit;
end;
if ExtractFileExt(dlgOpen1.FileName) <> '.xls' then
begin
MessageBox(0,'请选择正确的excel文件',PChar('提示'),MB_OK or MB_ICONWARNING);
Exit;
end;
MsExcel:=CreateOleObject('Excel.application');
MsExcel.Visible := True;
MsExcelWorkBook := MsExcel.WorkBooks.Open(dlgOpen1.FileName);
except
Exit;
end;
Try
Application.ProcessMessages;//防止进程阻塞
iRow := BeginRow;
iCol := BeginClo;
while trim(MsExcel.WorkSheets['sheet1'].cells[iCol,iRow].value)<> '' do
begin
b := Trim(MsExcel.worksheets[1].cells[ICol,iRow].value); // 卡号
c := Trim(MsExcel.worksheets[1].cells[ICol,iRow+1].value);// 姓名
d := Trim(MsExcel.worksheets[1].cells[ICol,iRow+2].value);// 姓名助记码
e := Trim(MsExcel.worksheets[1].cells[ICol,iRow+3].value);// 性别
f := Trim(MsExcel.worksheets[1].cells[ICol,iRow+4].value);// 出生日期
g := Trim(MsExcel.worksheets[1].cells[ICol,iRow+5].value);// 年龄
h := Trim(MsExcel.worksheets[1].cells[ICol,iRow+6].value);// 身份证号
i := Trim(MsExcel.worksheets[1].cells[ICol,iRow+7].value);// 联系方式
j := Trim(MsExcel.worksheets[1].cells[ICol,iRow+8].value);// 诊疗费用
k := Trim(MsExcel.worksheets[1].cells[ICol,iRow+9].value);// 监护人姓名
l := Trim(MsExcel.worksheets[1].cells[ICol,iRow+10].value);// 监护人身份证号
m := Trim(MsExcel.worksheets[1].cells[ICol,iRow+11].value);// 监护人联系方式
sql1 :='insert into MEDICAL_EXPENSES_TABLE (ME_ID,MET_ID,MET_NAME,MET_NAME_MNEMONIC,MET_SEX,MET_BIR,MET_AGE,MET_NUM,MET_PHONE,MET_SUM,MET_US_SUM,';//诊疗费用,已使用
sql1 :=sql1 +'MET_USABLE_SUM,MET_GUARDIAN_NAME,MET_GUARDIAN_NUM,MET_GUARDIAN_PHONE,MET_TIME,UT_ID) values';
sql1 := sql1 +' ('''+b+''','''+c+''','''+d+''','''+e+''',to_date('''+f+''',''yyyy/mm/dd''),'''+g+''','''+h+''','''+i+''','''+j+''',';
sql1 := sql1 +''''+'0'+''','''+j+''','''+k+''','''+l+''','''+m+''',sysdate,'''+user_name+''')';
Data.sql_insert(sql1);//这个是我在别的单元写的执行生sql语句的方法
iCol:=iCol+1;
end;
MsExcel.quit;
except
MessageBox(Self.Handle,'数据导入失败!','系统提示',0);
MsExcel.quit;
Exit
end;
MessageBox(Self.Handle,'数据导入成功!','系统提示',0);
end;
结束语
感觉还是差点意思,有问题的可以下面留言,(#.#)!