如何实现从文本导入SQL数据库的问题?? 想做一个导入小程序,就是把记事本或者EXCEL里的数据导入到SQL数据库表里,要求从文件*.txt或者*.xls导入的数据要先在表单里显示出来,然后做个"导入"按钮导入,是用DBGrid显示数据好还是谁有现成的代码发一份,100分送上!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 想做一个导入小程序,就是把记事本或者EXCEL里的数据导入到SQL数据库表里, 要求从文件*.txt或者*.xls导入的数据要先在表单里显示出来,然后做个"导入"按钮导入,是用DBGrid显示数据好还是StringGrid1, 谁有现成的代码发一份,100分送上!!! 将excel中数据导入到数据库中,工作时用到的,仅作参考,目的是把Excel中指定的列的数据导入到表中,至于在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中显示的过程,比较简单,所以没有写! 从文本或excel导入数据到sqlserver完全可由SQL实现,参考:http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966 我就是想用程序实现,因为还要进行数据处理,处理后的数据还要导EXCEL表格出来,所以不能由SQL直接导入. 用StringGrid吧。相对能好处理些。 stringgrid 排序? 打印机是否可以打印浮点数? 为何在98下面运行出错,在2000上正常 请问如何把图片转换成字符串 DBedit 显示浮点数据问题,为什么2.5显示为2.49999999999,马上给分 寻求女友项目 关于Win98登录框的小问题???? 请教各位大侠,网络编程,急急急急急急急急,在线等待 怎样将一个form作为一个child,加入另一个form上的panel中? 我做了一个数据库单表或多表的查询组件包很好用。请大家多提意见 调用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直接导入.