想做一个导入小程序,就是把记事本或者EXCEL里的数据导入到SQL数据库表里,
要求从文件*.txt或者*.xls导入的数据要先在表单里显示出来,然后做个"导入"按钮导入,是用DBGrid显示数据好还是
谁有现成的代码发一份,100分送上!!!
要求从文件*.txt或者*.xls导入的数据要先在表单里显示出来,然后做个"导入"按钮导入,是用DBGrid显示数据好还是
谁有现成的代码发一份,100分送上!!!
解决方案 »
- 在delphi客户端如何可以不下载服务器中视频能在线播放?
- 为什么程序编译都通过了,可是执行时缺说找不到表呢?
- TIdFTP访问非标准端口的服务器问题
- 谁知道插入USB设备后,触发的事件是什么
- 一个有关"IntToStr 将整型数转换为字符串"的问题
- 怎么在delphi中的按钮中加图标啊,在线等~~
- 请教PChar的使用?
- 如何在程序中控制某个服务程序的启动和停止?
- 送分,在线,解答完就结(在线等待)
- 我想把一个已经编译好的程序,从新编译成DLL,哪位大侠能告诉我该如何去做,将不胜感激。
- 调用AdjustTokenPrivileges函数,出现错误,请高手解决
- 请问edit组件如何控制单个字符的颜色和字体.
要求从文件*.txt或者*.xls导入的数据要先在表单里显示出来,然后做个"导入"按钮导入,是用DBGrid显示数据好还是StringGrid1, 谁有现成的代码发一份,100分送上!!!
至于在DBGRID中显示,你可以加些控件在导入之后显示.
procedure TfrmCX_KHHKJH.btnDRHKJHClick(Sender: TObject);
var
MsExcel, MsExcelWorkBook, MsExcelWorkSheet: Variant;
sFileName, sFile: String;
sKHID, sKHMC, sHKJH, sBZ: string;
sHKSJ, sFKSJ: string;
iItem, iRows, i: Integer;
iKHID, iKHMC, iHKJH, iHKSJ, iFKSJ, iBZ: Integer;
begin
//打开Excel文件
if dlgOpenFile.Execute then
sFileName := dlgOpenFile.FileName
else
Exit;
//创建Excel应用程序
MsExcel := CreateOleObject('Excel.Application');
try
MsExcelWorkBook := MsExcel.WorkBooks.Open(sFileName);
sFile := ExtractFileName(sFileName);
for iItem := 1 to 1 do
begin
MsExcelWorkSheet := MsExcel.WorkSheets[iItem];
iRows := MsExcelWorkSheet.UsedRange.Rows.Count;//统计数据条数
iKHID := 0;
iKHMC := 0;
iHKJH := 0;
iHKSJ := 0;
iFKSJ := 0;
iBZ := 0;
//判断文件的合法性
for i := 1 to 6 do
begin
if Pos('客户代码',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
iKHID := i;
if Pos('客户名称',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
iKHMC := i;
if Pos('还款计划',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
iHKJH := i;
if Pos('计划还款时间',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
iHKSJ := i;
if Pos('反馈时间',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
iFKSJ := i;
if Pos('备注',MsExcelWorkSheet.Range[RangeAZ(i)+inttostr(1)].Value) > 0 then
iBZ := i;
end;
if IsZero(iKHID*iKHMC*iHKSJ*iHKJH*iFKSJ*iBZ) then
begin
ShoeMessage('格式不正确,导入失败!');
if not VarIsEmpty(MsExcel) then
MsExcel.Quit;
Exit;
end;
//开始导入数据到U_KHHKJH表
for i := 2 to iRows do
begin
sKHID := MsExcelWorkSheet.Range[RangeAZ(iKHID)+inttostr(i)].Value;
sKHMC := MsExcelWorkSheet.Range[RangeAZ(iKHMC)+inttostr(i)].Value;
sHKJH := MsExcelWorkSheet.Range[RangeAZ(iHKJH)+inttostr(i)].Value;
sHKSJ := MsExcelWorkSheet.Range[RangeAZ(iHKSJ)+inttostr(i)].Value;
sFKSJ := MsExcelWorkSheet.Range[RangeAZ(iFKSJ)+inttostr(i)].Value;
sBZ := MsExcelWorkSheet.Range[RangeAZ(iBZ)+inttostr(i)].Value;
if Trim(sKHID) <> '' then
begin
qryTool.Close;
qryTool.SQL.Clear;
qryTool.SQL.Add('insert into U_KHHKJH( ');
qryTool.SQL.Add(' U_KHHKJH_ID, U_KHHKJH_KHID, U_KHHKJH_KHMC, ');
qryTool.SQL.Add(' U_KHHKJH_HKJH, U_KHHKJH_HKRQ, U_KHHKJH_FKSJ, ');
qryTool.SQL.Add(' U_KHHKJH_BZ) ');
qryTool.SQL.Add('values( ');
qryTool.SQL.Add(' :pID, :pKHID, :pKHMC, ');
qryTool.SQL.Add(' :pHKJH, convert(datetime,:pHKRQ), :pFKSJ, ');
qryTool.SQL.Add(' :pBZ) ');
qryTool.ParamByName('pID').AsFloat := GetMaxID;
qryTool.ParamByName('pKHID').AsString := sKHID;
qryTool.ParamByName('pKHMC').AsString := sKHMC;
qryTool.ParamByName('pHKJH').AsString := sHKJH;
qryTool.ParamByName('pHKRQ').AsString := sHKSJ;
qryTool.ParamByName('pFKSJ').AsString := sFKSJ;
qryTool.ParamByName('pBZ').AsString := sBZ;
qryTool.ExecSQL;
end;
end;
end;
ShoeMessage('导入完毕!');
if not VarIsEmpty(MsExcel) then
MsExcel.Quit;
Run;
except on E: Exception do
begin
if not VarIsEmpty(MsExcel) then
MsExcel.Quit;
ShoeMessage('导入失败!'+E.Message);
Exit;
end;
end;
end;
其中的“Run”就是导入之后把表U_KHHKJH查询出来在DBGRID中显示的过程,比较简单,所以没有写!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
我就是想用程序实现,因为还要进行数据处理,处理后的数据还要导EXCEL表格出来,所以不能由SQL直接导入.