用DELPHI如何将EXCEL文件导入到数据库中?应该用什么方法实现这转换呢,请指教谢谢! 请具体一点,谢谢!!
解决方案 »
- spcomm 电子秤 老问题
- 关于SOCKET通讯在广域网上的应用
- 类似于win2000理的计算机管理工具理的菜单是怎么做的?
- 怎样将串口中读到的信息写到一个文件中?
- 请问在QuickReport如何计算每页的数据字段求和?(有多页)
- Delphi的程序员们联合起来!一起学习和提高!Delphi统一战盟!
- 如何去除form的状态条中的最小化,最大化,关闭那三个状态!
- 您好,请问怎样才能在private中定义控件和控件的方法?
- 菜鸟的问题
- form的free方法和close方法有什么不同呢?
- 如何将Memo中的所有行添加到数据库TEXT类型(SQL SERVER)字段当中
- 如何在delphi程序中判断serversql服务管理器有没有启动?另外怎么控制他呢?
直接用 OLE 读取 EXCEL 文档。
procedure TForm1.Button1Click(Sender: TObject);
var ExcelApp,MyWorkBook: OLEVariant;
i,j: Integer;
begin
try
ExcelApp:=CreateOleObject('Excel.Application');
MyWorkBook:=CreateOleobject('Excel.Sheet');
except
application.Messagebox('无法打开Xls文件,请确认已 经安装EXCEL.','',
mb_OK+mb_IconStop);
Exit;
end;
//ExcelApp.Visible := true;
MyworkBook:= ExcelApp.workBooks.Open(ExtractFileDir(Application.ExeName)
+ '\' + Edit1.Text + '.xls');
for i := 3 to 9 do begin
//Read a row into table
table1.Append;
table1.FieldByName('Name').AsString := MyWorkBook.WorkSheets[1].Cells[i,1].Value;
table1.FieldByName('Size').AsString := MyWorkBook.WorkSheets[1].Cells[i,2].Value;
table1.FieldByName('Weight').AsString := MyWorkBook.WorkSheets[1].Cells[i,3].Value;
table1.FieldByName('Area').AsString := MyWorkBook.WorkSheets[1].Cells[i,4].Value;
end;
//showmessage(MyWorkBook.WorkSheets[1].Columns[1].numberformat);
//showmessage(MyWorkBook.WorkSheets[1].Columns[2].numberformat); ExcelApp:=Unassigned; //释放VARIANT变量
end;
---------------------------------------------------------------------
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\我的文档\人事资料\在职\200205在岗人员名单.xls;Extended Properties=excel 8.0;Persist Security Info=False用adotable连接后设置tabledirect为true,你的excel数据库要有一个字段名,就像其它数据库一样是一个二维表.jet.oledb.4.0功能强大,不但可以连接access,还可以连接dbase,paradox,excel,text等几乎所有的本地数据库。你可以一条一条地读出来再写入,也可以用一条sql语句来做,我想这两种方式的效率你应该心中有数了吧?~~
下面我就说一说如何把excel数据导入成access数据库。
假如你在d:\下有一个excel文件叫tmp.xls,其中有一个工作表叫sheet1,表中的数据如下
业务统计表
字段1 字段2 字段3 字段4
2 2 4 2
2 4 2 2
2 3 1 3
2 1 1 2
1 1 2 1
现在要把这个表导入D:\test.mdb中并命名为ywb3。操作步骤为:
1、确保已经有D:\test.mdb这个文件,并且其中没有ywb3这个表。
2、打开tmp.xls,把你要导入的数据选起来,包括字段名(“字段1、字段2等等,不包括表题名("业务统计表"),起一个名称ywb3(操作方法为在excel名称框中输入ywb3按回车确认)。
3、设置ado组件的connectionstring为
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\tmp.xls;Extended Properties=excel 8.0;Persist Security Info=False
4、这一步非常关键,如果你是用adotable,把tabledirect设为false,(true只有在excel表没有表题,是一个纯二维表是才能用),并且在tablename中选ywb3(就是你是excel名称框中输入的名称,其中有一些是你在excel工作薄中的工作表名+$,只有在没有定义名称的情况下才用选他们),就可以正确的在dbgrid中显示、处理数据了;要把数据导出成access文件,要使用adoquery或adodataset或adocommand组件,我以adocommand组件为例,设置commandtext为
select * into ywb3 in "d:\test.mdb" from ywb3,然后执行adocommand1.Execute就可以把数据导出到d:\test.mdb中的ywb3了,当然你还可以加where条件来限制导出的数据。
5、补充说明
你可以把excel中的一个工作表中的多块数据区域定义成不同的名称,在ado中看来就是一张不同的表,你就可以对这些表进行各种sql操作了,比如查询,更新,删除,甚至删除等等。