利用ODBC读取Excel数据
在仿真中可以利用ODBC直接对Excel数据进行读写操作,在进行数据的大量读写时速度相对于ActiveX更快,并且支持sql语句,更加方便。
使用方法
1. 确认仿真软件是32位还是64位。
2.确认是否安装32位或64位的Microsoft Access 2010 数据库引擎。
打开ODBC数据源(32/64位),在用户DSN处选择添加。如存在Microsoft Excel Driver,则说明已安装Microsoft Access 2010 数据库引擎,如没有,则需手动安装。
Microsoft Access 2010 数据库引擎下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=13255
3.可通过以下语句访问Excel表格。
simtalk1.0:
local Driver:string;
if is64BitApplication then
Driver:="Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
else
Driver:="Microsoft Excel Driver (*.xls)"
end;
local path :string:=selectFileForOpen("Excel Files (*.xls)|*.xls||");
local str :string:="Driver="+Driver+";FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=";
str:=str+path+";DBQ="+path+";";
odbc_XLS.DriverConnect(str);
odbc_XLS.sql(tab,"select 列名 from [表名$] where 条件;");
simtalk2.0:
var Driver:string
if is64BitApplication
Driver:="Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
else
Driver:="Microsoft Excel Driver (*.xls)"
end
var path:string:=selectFileForOpen("Excel Files (*.xls)|*.xls||")
var str :string:="Driver="+Driver+";FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB="
str:=str+path+";DBQ="+path+";"
odbc_XLS.DriverConnect(str)
odbc_XLS.sql(tab,"select 列名 from [表名$] where 条件;")
注意事项
- 通过ODBC传递SQL语句时,from后的表名要用”[表名$]”的格式,不可直接写表名。
- 32位软件只能读取.xls格式的Excel文件,64位软件可以读取.xls, .xlsx, .xlsm, .xlsb四种格式的Excel文件。
- 如已安装32位office则无法安装64位Microsoft Access 2010 数据库引擎,所以当安装32位office与64位仿真软件时,无法使用此方法。
- SQL语句中列名为Excel中首行内容,表名为Excel中的Sheet表名。
测试模型
文件下载:ExcelODBC
软件版本:11.3