特殊要求:运行环境为没有安装Excel的Windows系统,Delphi中表数据与Excel文件(*.xls)之间导入导出。 数据表与*.xls文件之间的导入导出功能的实现方法已经知道,问题是系统有新要求,不能指望用户的的计算机(Windows系统)上安装有Excel,各位大哥帮忙想一想应该怎么办?说明:看清楚要求,谢绝再说Excel的导入导出功能的实现,谢谢!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 导出可以用dxdbgrid的导出功能,导入恐怕很难实现了 把你的电脑上的EXCEL9.OLB(excel2000)拷到没有安装Excel的电脑的System32(2000/XP)或 System (98/ME)的文件夹里面试试看。 导出的时候先导出为TxT文件,各个数据项之间加Tab键,然后再把文件的后缀名改为.xls就可以了,这样的速度很快的~ 也不是很难的,给楼主两种方法。第一种,适合于处理简单数据的,把Excel当成Access数据库来进行连接。方法如下,先选择Jet 4.0。然后选择你的Excel文件(XLS).然后,进入最后一个页(所有)设置属性,选择Extended Properties一项,输入Excel版本号office 2003为Excel 11.0。然后,再改一下下面的Jet OLEDB:Engine Type属性,值为35。最后,测试一下连接,没有错误是能连接上的,生成连接字符串。利用现有的数据库技术就可以往下做了,要注意,Excel中的表单名在这里的引用是[Sheet1$]。第二种方法是利用现成的控件,华表(Cell)就可以。可惜我手头上没那玩艺,不能详细的告诉你该如何连接,楼主可以在网上找一找关于华表方面的东西。华表是ActiveX控件。 已经知道了,和fanyufanyu(反语) 的方法第一种一样,用的是Excel 8.0暂时不结贴,看看还有没有什么其它的方法!!!! const ConStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";' + 'Data Source=%s;Extended Properties=Excel 8.0;';begin //利用ADODataSet打开*.xls文件 OpenDialog1.InitialDir := ExtractFileDir(Application.ExeName); OpenDialog1.Filter := 'XLS文件|*.xls'; if OpenDialog1.Execute then begin try ADOConnection1.Connected := false; ADOConnection1.ConnectionString := format(Constr, [OpenDialog1.FileName]); ADOConnection1.LoginPrompt := false; ADOConnection1.Connected := true; ADODataSet1.Close; ADODataSet1.CommandType := cmdTableDirect; try TableList := TStringList.Create; ADOConnection1.GetTableNames(TableList); ADODataSet1.CommandText := TableList[0]; finally TableList.Free; end;//end of try ADODataSet1.Open; except on e: Exception do begin ADODataSet1.Close; raise e.Create('打开Excel文件错误!如果你已经打开Excel,请先关闭Excel文件!' + #13 + e.Message); end; end;//end of try end; 'SELECT * FROM [sheet1$]是什么想导入的EXECL表. 用ExpressQuantumGrid轻松实现。给分! 何如使用Delphi读取DXF文件? 如何写入剪切板和从剪切板取出内容? 请教,新手入门应该看那些书籍? 使用dbgrid或ehlib的dbgrideh怎样完成以下的表格啊? 大侠请关注:ADO的UpdataBatch的执行效率问题,谁能将时间控制在1分钟之内,另开贴加分 这条SQL语句怎么写 进行瞧瞧!用WITH .. DO 语句的使用技巧? 一个关于sql的问题 很急!!但是很简单!有关money的问题 DLL中能不能不用ShareMem单元? idFTP connect 后程序未响应 DELPHI 读取CMOS参数信息
System32(2000/XP)或 System (98/ME)的文件夹里面试试看。
第一种,适合于处理简单数据的,把Excel当成Access数据库来进行连接。
方法如下,先选择Jet 4.0。然后选择你的Excel文件(XLS).
然后,进入最后一个页(所有)设置属性,选择Extended Properties一项,输入Excel版本号
office 2003为Excel 11.0。
然后,再改一下下面的Jet OLEDB:Engine Type属性,值为35。
最后,测试一下连接,没有错误是能连接上的,生成连接字符串。
利用现有的数据库技术就可以往下做了,要注意,Excel中的表单名在这里的引用是[Sheet1$]。第二种方法是利用现成的控件,华表(Cell)就可以。可惜我手头上没那玩艺,不能详细的告诉你该如何连接,楼主可以在网上找一找关于华表方面的东西。华表是ActiveX控件。
暂时不结贴,看看还有没有什么其它的方法!!!!
ConStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Password="";'
+ 'Data Source=%s;Extended Properties=Excel 8.0;';
begin
//利用ADODataSet打开*.xls文件
OpenDialog1.InitialDir := ExtractFileDir(Application.ExeName);
OpenDialog1.Filter := 'XLS文件|*.xls';
if OpenDialog1.Execute then
begin
try
ADOConnection1.Connected := false;
ADOConnection1.ConnectionString := format(Constr, [OpenDialog1.FileName]);
ADOConnection1.LoginPrompt := false;
ADOConnection1.Connected := true;
ADODataSet1.Close;
ADODataSet1.CommandType := cmdTableDirect;
try
TableList := TStringList.Create;
ADOConnection1.GetTableNames(TableList);
ADODataSet1.CommandText := TableList[0];
finally
TableList.Free;
end;//end of try
ADODataSet1.Open;
except
on e: Exception do
begin
ADODataSet1.Close;
raise e.Create('打开Excel文件错误!如果你已经打开Excel,请先关闭Excel文件!' +
#13 + e.Message);
end;
end;//end of try
end;