excel导入请教一下各位大哥大姐,我想把一个excel导入到数据库,并单独为这个文件创建一个表,然后用dbgrideh
excel导入
请教一下各位大哥大姐,我想把一个excel导入到数据库,并单独为这个文件创建一个表,然后用dbgrideh显示出来
请大家指教。
[解决办法]
uses comobj
procedure Button1Click(Sender: TObject);
var
dl,zl,xl : string;
ExcelApp,WorkBook : variant;
ExcelRowCount,i : Integer;
begin
try
dlgOpen1.Execute;
ExcelApp := CreateOleObject('Excel.Application');
WorkBook := ExcelApp.WorkBooks.Open(dlgOpen1.FileName);//使用opendialog对话框指定
//excel档路径
ExcelApp.Visible := false;
ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
for i := 1 to excelrowcount + 1 do
begin
dl := Trim(excelapp.Cells[i,1].Value);
zl := Trim(excelapp.Cells[i,2].Value);
xl := Trim(excelapp.Cells[i,3].Value);
//插入数据
end;
finally
WorkBook.Close;
ExcelApp.Quit;
ExcelApp := Unassigned;
WorkBook := Unassigned;
ShowInfo('导入成功');
end;
end;
[解决办法]
//.....创建表结构A(包含字段a1,a2)
//TableName:='$sheet1'。根据实际情况
//xlspath:excel完整路径
//b1,b2 是excel里的列名称
strSQL:='INSERT INTO A(a1,a2)Select b1 as a1,b2 as a2 FROM [excel 8.0;database=' + xlspath + '].[' + TableName + ']'
然后执行这个SQL语句就能将Excel里的数据导入到数据库中
执行SQL之前先将ParamCheck := false;要不会报错
[解决办法]他们的太复杂,用这个
adoconnection1.Connected:=false;
ADOConnection1.ConnectionString:=
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+access.Text+';'
+'Persist Security Info=False';
//ww:='select * into 3 FROM [excel 8.0;database='+excel.Text+'].[Sheet1$]';
SQLStr:='select * into '+a.Text+' FROM [excel 8.0;database='+excel.Text+'].['+e.Text+'$]';
ADOConnection1.Execute(SQLStr);
adoconnection1.Connected:=true;
showmessage('数据转换成功,谢谢你使用该软件!');
except
on e:Exception do
ShowMessage(E.message);
end
else
begin
showmessage('请输入完整数据!');
end;
end;
[解决办法]在DELPHI中使用ADO直接访问Excel数据文件
摘 要:在DELPHI中使用ADO直接访问Excel数据文件
关键字:ADO Excel
类 别:数据库
要用DELPHI中的ADO系列控件访问Excel数据文件,首先应该建立一些基本概念。你需要将一个Excel数据文件想象
为一个关系数据库,Excel文件中的每个工作表就对应该数据库中的一个表,而工作表中的每一列当然就是表的列了。
然后,按照下列面的秘诀进行就可以。
1.设置ADOConnection的ConnectionString
构造ConnectionString时,OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider作为ADO的驱动程序。
这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件。
连接的数据库名称当然就是你要打开的Excel文件,注意扩展名是*.xls,而不是*.mdb。
最关键的一点是,还要设置扩展属性Extended Properties为"Excel 8.0",否则,测试连接时会报告无法识别数据格式
的错误。Extended Properties的属性值在"所有"参数页中输入。
最后,设置完成后的ConnectionString中的各项参数为:
Provider=Microsoft.Jet.OLEDB.4.0
Data Source=MyExcelFile.xls
Extended Properties=Excel 8.0
Persist Security Info=False
2.设置ADODataSet或ADOTable
1将ADODataSet或ADOTable连接到刚才的ADOConnection。如果不用ADOConnection,也可以参照上面的方法直接设置
ADODataSet或ADOTable的ConnectionString属性。
2对于ADODataSet,需要将CommandType属性设置为cmdTableDirect,而对于ADOTable,则将TableDirect属性设置为True。
因为,访问Excel文件是直接的数据文件访问,不是通过SQL语句来操作游标访问的。如果不设置直接访问,则系统会报告
SQL语句格式错误等信息。
然后,当你下拉ADODataSet中的CommandText属性或ADOTable的TableName属性时,就可以选择到要打开的工作表了。
注意,表名后面多了加一个$符号。
3.打开ADODataSet或ADOTable
连接DBF数据
构造ado connection string
提供者选择 Microsoft Jet 4.0 OLEDB Provider
"所有"那里编辑 Extended Properties,
dbf文件的话设置为dBase 5.0(注意dBase和5.0之间必须有空格,最好拷贝过去粘贴)
db文件的话设置为Paradox 7.X
(dbf就是dbase或Vfox数据库,db就是paradox数据库)
"连接"那里的"数据库名称"输入的是目录名,不能包含文件名,
比如你的文件是 c:\temp\aaa.dbf ,那么输入c:\temp
同时CursorLocation 设置为: clUseServer
还可以:
如果直接连的话,ADO的连接字串设为:
adoConnection1.ConnectionString:='Provider=MSDASQL.1;Extended Properties="Driver={Microsoft Visual Foxpro Driver};SourceType=DBF;SourceDB=c:mydb"';
如果是用ODBC,先在ODBC中设一个DSN连接到该DBF库,然后,在ADOConnection中设置连接ODBC的连接字串即可(可以用向导帮助完成)