代码如下:
procedure TForm1.Btn_importClick(Sender: TObject);
var
SqlStr: string;
SqlStr1: string;
begin
SqlStr1:='Data Source='+Trim(Ed_ExcelFile.Text)+';User ID=Admin;Password=;Extended properties=Excel 8.0';
SqlStr:='INSERT INTO text([姓名],[年龄]) SELECT [姓名],[年龄] FROM ';
SqlStr:=SqlStr+' OpenDataSource( '+''''+'Microsoft.Jet.OLEDB.4.0'+''''+',';
SqlStr:=SqlStr+''''+SqlStr1+'''';
SqlStr:=SqlStr+')...sheet1$';
//Memo1.Text:=SqlStr;
with Qry do
begin
Sql.Clear;
Sql.Add(SqlStr);
ExecSql;
showmessage('成功! :) ')
end;
end;上面的代码是为了实现按字段导入Sql server,但在测试时,只能导入到本机上的SqlServer,用另一台机器上的SqlServer测试时,则出错!
错误信息:“OLEDB提供程序'MS JET.OLEDB.4.0'报错,提供程序未给出有关错误的任何信息”
不知道什么原因!:(
procedure TForm1.Btn_importClick(Sender: TObject);
var
SqlStr: string;
SqlStr1: string;
begin
SqlStr1:='Data Source='+Trim(Ed_ExcelFile.Text)+';User ID=Admin;Password=;Extended properties=Excel 8.0';
SqlStr:='INSERT INTO text([姓名],[年龄]) SELECT [姓名],[年龄] FROM ';
SqlStr:=SqlStr+' OpenDataSource( '+''''+'Microsoft.Jet.OLEDB.4.0'+''''+',';
SqlStr:=SqlStr+''''+SqlStr1+'''';
SqlStr:=SqlStr+')...sheet1$';
//Memo1.Text:=SqlStr;
with Qry do
begin
Sql.Clear;
Sql.Add(SqlStr);
ExecSql;
showmessage('成功! :) ')
end;
end;上面的代码是为了实现按字段导入Sql server,但在测试时,只能导入到本机上的SqlServer,用另一台机器上的SqlServer测试时,则出错!
错误信息:“OLEDB提供程序'MS JET.OLEDB.4.0'报错,提供程序未给出有关错误的任何信息”
不知道什么原因!:(
解决方案 »
- DBGridEh怎样使用CheckBox而不修改保存数据
- adoquery的Active=true时弹出‘missing sql property’怎样解决?
- 语音通信的问题,有代码大家帮我看看,急
- 那位高手知道怎样把TRichEdit旋转个角度(包括里面的文字也跟着转)
- 请问这该怎么做?
- delphi dbgrideh 相同数据行合并的问题
- modalresult的返回值是多少????
- 还是delphi中利用sql查询foxpro的问题。
- 如果使用代码在桌面上写字了?
- 请问,IMAGE控件里有一个图片,它背景为红色,我现在想把它背景设为透明(即跟FORM的背景色一样,不知怎么做?)
- 循环执行这个语句时出错,为什么
- F1BOOK如何知道有几个SHEET,啊,是什么属性哦,谢了,
再查询分析器里报如下错误:
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。如果连接的是本机SqlServer,执行完全正常!
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------2、将Excel的数据导入SQL server :-- ======================================================SELECT * into newtableFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]实例:SELECT * into newtableFROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions-------------------------------------------------------------------------------------------------3、将SQL SERVER中查询到的数据导成一个Excel文件-- ======================================================T-SQL代码:EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'参数:S 是SQL服务器名;U是用户;P是密码说明:还可以导出文本文件等多种格式实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"' EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'在VB6中应用ADO导出EXCEL文件代码: Dim cn As New ADODB.Connectioncn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"-------------------------------------------------------------------------------------------------
4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0','Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)T-SQL代码:
INSERT INTO OPENDATASOURCE('Microsoft.JET.OLEDB.4.0', 'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$] (bestand, produkt) VALUES (20, 'Test') -------------------------------------------------------------------------------------------------总结:利用以上语句,我们可以方便地将SQL SERVER、ACCESS和EXCEL电子表格软件中的数据进行转换,为我们提供了极大方便!把文本文件导入到ACCESS
在Form上放一个ADOConnection,连结指向目标Access库
比如txt文件在c:\temp\aaaa.txt
就执行
ADOConnection.Connected := True;
ADOConnection.Execute('Select * Into abcd From [Text;Database=c:\temp].aaaa.txt');=============================================================================================把DBF(Foxpro数据库)导入到SQLSERVER
告诉你一个最快的方法,用SQLServer连接DBF(Foxpro数据库)
在SQLServer中执行
SELECT * into bmk
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0,
'Data Source="e:\share";User ID=Admin;Password=;Extended properties=dBase 5.0')...bmk
//求出filename对应的Excel文件的主键PK列的最大行数.
var
n:integer;
begin
if (trim(filename)='') then
begin
MessageBox(GetActiveWindow(),'请正确选择相关路径!', '警告',MB_OK+MB_ICONWARNING);
exit;
end; xlsFilename:=trim(filename);
try
Excel := CreateOLEObject('Excel.Application');
except
Application.MessageBox('Excel没有安装!','提示信息',MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
Exit;
end; Excel.Visible := false;
Excel.WorkBooks.Open(xlsFilename);
n:=1;
while Trim(Excel.WorkSheets[1].Cells[n,PK].Value)<>'' do
n:=n+1;
Result:=n-1;
end;
Procedure TM_DataModule.LoadFromExcel(filename:string;StartRow,StartCol,EndRow,EndCol:integer;ADOStoredProc:TADOStoredProc;StoredProcName:String;PK:integer;Flag:integer);
//将filename对应的Excel文件导入到ADOStoredProc的数据集中,PK为主键所在字段的列数(不使其重复).
//Flag为标志,为0时需在最后加入一个与值与主键相等的密码字段.
var
iRow,iCol:integer;//当前行、列
n,num:integer;
begin
try
num:=0;
With ADOStoredProc do
begin
Close;
ProcedureName:=StoredProcName;
Open;
for iRow:=StartRow to EndRow do
begin
n:=0;
if not Locate(Fields[pk].FieldName,trim(Excel.WorkSheets[1].Cells[iRow,StartCol].Value),[]) then
begin
Append;
for iCol:=StartCol to EndCol do
begin
Fields[n].AsString:=Excel.WorkSheets[1].Cells[iRow,iCol].Value;
n:=n+1;
end; //end for icol
if Flag=0 then
Fields[n].AsString:=Excel.WorkSheets[1].Cells[iRow,1].Value;
num:=num+1;
Post;
end; //end if
UpdateStatus;
end;//end for irow
end;//end with
showmessage('导入成功! 共导入'+inttostr(num)+'条记录');
Excel.Quit;
except
Application.MessageBox('导入数据出错!请检查文件数据是否完整或输入的行/列数是否有误!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
end;
end;
procedure TM_StudentForm.LoadBitBtnClick(Sender: TObject);
var FileName:String;
EndRow:integer;//取得Excel第一列不为空的最大行数
begin
FileName:='';
OpenDialog1.Title:= '请选择相应的Excel文件';
OpenDialog1.Filter:= 'Excel(*.xls)|*.xls';
if OpenDialog1.Execute then
Filename:=OpenDialog1.FileName;
if Filename='' then
Exit;
EndRow:=M_Datamodule.GetMaxRow(Filename,1);
M_DataModule.LoadFromExcel(FileName,2,1,EndRow,5,M_DataModule.ADOStoredProc,'SP_Student_GetList',0,0);
end;