如何实现从Excel批量导入数据到Sql Server 怎么实现从Excel导入数据到数据库中,希望各位说的详细点,最好给点实例,谢谢了........ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这样的例子很多,你google,baidu一下 我也想知道,我是用stringgrid实现的,但外观很丑,数据量大时导入比较慢,如果把excel作为数据源的话无法先预览看一下, 从DBGrid,StringGrid导出Excel procedure TDM.CopyDbDataToExcel(Target: TDBGridEh;mb,FileName: string);variCount, jCount: Integer;XLApp: Variant;Sheet: Variant;beginScreen.Cursor := crHourGlass;if not VarIsEmpty(XLApp) thenbegin XLApp.DisplayAlerts := False; XLApp.Quit; VarClear(XLApp);end;//--------------------------选择模板------// CopyFile(pChar(Trim(ExtractFilePath(Application.ExeName))+mb+'.xls'),pChar(FileName+'1.xls'),false);//------------------------//通过ole创建Excel对象try XLApp := CreateOleObject('Excel.Application');except Screen.Cursor := crDefault; Exit;end;if mb = '统计-项目信息前' then XLApp.WorkBooks.Add[Trim(ExtractFilePath(Application.ExeName))+mb+'.xls'] //你要把数据放在那里啊,先生成个文件在e:\1.xlselse XLApp.WorkBooks.Add;XLApp.WorkBooks[1].WorkSheets[1].Name := 'sheet1';Sheet := XLApp.Workbooks[1].WorkSheets['sheet1'];if not Target.DataSource.DataSet.Active thenbegin Screen.Cursor := crDefault; Exit;end;Target.DataSource.DataSet.first;for iCount := 0 to Target.Columns.Count - 1 dobegin Sheet.cells[1, iCount + 1] := trim(Target.Columns.Items[iCount].Title.Caption);end;jCount := 1;while not Target.DataSource.DataSet.Eof dobegin for iCount := 0 to Target.Columns.Count - 1 do // begin if iCount = 0 then Sheet.cells[jCount + 1, iCount + 1] := IntToStr(jCount) else Sheet.cells[jCount + 1, iCount + 1] := trim(Target.Columns.Items[iCount].Field.AsString); end;Inc(jCount);Target.DataSource.DataSet.Next;end;//--------------------可以在此添加Excel的宏-----------XLApp.ActiveWorkbook.SaveAs(FileName:=FileName); ;Screen.Cursor := crDefault;XLApp.ActiveWorkbook.Close;end;-----------------------------------------StringGridToExcelprocedure TDM.CopySGDataToExcel(Target: TStringGrid;FileName: string);variCount, jCount: Integer;XLApp: Variant;Sheet: Variant;beginScreen.Cursor := crHourGlass;if not VarIsEmpty(XLApp) thenbeginXLApp.DisplayAlerts := False;XLApp.Quit;VarClear(XLApp);end;//通过ole创建Excel对象tryXLApp := CreateOleObject('Excel.Application');exceptScreen.Cursor := crDefault;Exit;end;XLApp.WorkBooks.Add; //你要把数据放在那里啊,先生成个文件在e:\1.xlsXLApp.WorkBooks[1].WorkSheets[1].Name := 'sheet1';Sheet := XLApp.Workbooks[1].WorkSheets['sheet1'];Target.Row := 0;for iCount := 0 to Target.RowCount - 1 dobegin for jCount := 0 to Target.ColCount - 1 do Sheet.cells[iCount + 1, jCount + 1] := Target.Cells[jCount,iCount]; Target.Row := iCount;end;XLApp.ActiveWorkbook.SaveAs(FileName:=FileName);Screen.Cursor := crDefault;XLApp.ActiveWorkbook.Close;end; 何时要end,何时不要end 编写三层结构的大虾请进...... TRealAudio控件问题 怎么在Delphi中报数据输出到Word里..用了好久别的报表工具还是认为WORD好 大虾们,SOS,我不行了。。。。。三层更新问题????????---分不够可以再加。。。。。 页面登陆验证后,再开启另外一个窗口,仍需要登陆才能进入相应页面,怎样避免? 怎么把real型的数据变成string的?用什么函数?急 关于连接数据库不能捕获连接异常的问题? delphi6 bug? 年月日的问题,请各位大哥帮帮忙! Delphi 调用C++的dll问题 一个简单的错误,帮我看看
procedure TDM.CopyDbDataToExcel(Target: TDBGridEh;mb,FileName: string);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
//--------------------------选择模板------
// CopyFile(pChar(Trim(ExtractFilePath(Application.ExeName))+mb+'.xls'),pChar(FileName+'1.xls'),false);
//------------------------
//通过ole创建Excel对象
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
if mb = '统计-项目信息前' then
XLApp.WorkBooks.Add[Trim(ExtractFilePath(Application.ExeName))+mb+'.xls'] //你要把数据放在那里啊,先生成个文件在e:\1.xls
else
XLApp.WorkBooks.Add;
XLApp.WorkBooks[1].WorkSheets[1].Name := 'sheet1';
Sheet := XLApp.Workbooks[1].WorkSheets['sheet1'];
if not Target.DataSource.DataSet.Active then
begin
Screen.Cursor := crDefault;
Exit;
end;
Target.DataSource.DataSet.first;for iCount := 0 to Target.Columns.Count - 1 do
begin
Sheet.cells[1, iCount + 1] := trim(Target.Columns.Items[iCount].Title.Caption);
end;jCount := 1;
while not Target.DataSource.DataSet.Eof do
begin for iCount := 0 to Target.Columns.Count - 1 do //
begin
if iCount = 0 then
Sheet.cells[jCount + 1, iCount + 1] := IntToStr(jCount)
else
Sheet.cells[jCount + 1, iCount + 1] := trim(Target.Columns.Items[iCount].Field.AsString);
end;
Inc(jCount);
Target.DataSource.DataSet.Next;
end;//--------------------可以在此添加Excel的宏-----------XLApp.ActiveWorkbook.SaveAs(FileName:=FileName); ;
Screen.Cursor := crDefault;
XLApp.ActiveWorkbook.Close;
end;
-----------------------------------------StringGridToExcelprocedure TDM.CopySGDataToExcel(Target: TStringGrid;FileName: string);
var
iCount, jCount: Integer;
XLApp: Variant;
Sheet: Variant;
begin
Screen.Cursor := crHourGlass;
if not VarIsEmpty(XLApp) then
begin
XLApp.DisplayAlerts := False;
XLApp.Quit;
VarClear(XLApp);
end;
//通过ole创建Excel对象
try
XLApp := CreateOleObject('Excel.Application');
except
Screen.Cursor := crDefault;
Exit;
end;
XLApp.WorkBooks.Add; //你要把数据放在那里啊,先生成个文件在e:\1.xls
XLApp.WorkBooks[1].WorkSheets[1].Name := 'sheet1';
Sheet := XLApp.Workbooks[1].WorkSheets['sheet1'];
Target.Row := 0;
for iCount := 0 to Target.RowCount - 1 do
begin
for jCount := 0 to Target.ColCount - 1 do
Sheet.cells[iCount + 1, jCount + 1] := Target.Cells[jCount,iCount];
Target.Row := iCount;
end;
XLApp.ActiveWorkbook.SaveAs(FileName:=FileName);
Screen.Cursor := crDefault;
XLApp.ActiveWorkbook.Close;
end;