用DELPHI中的ADO系列控件訪問Excel數(shù)據(jù)文件,首先應(yīng)該建立一些基本概念。你需要將一個Excel數(shù)據(jù)文件想象為一個關(guān)系數(shù)據(jù)庫,Excel文件中的每個工作表就對應(yīng)該數(shù)據(jù)庫中的一個表,而工作表中的每一列當(dāng)然就是表的列了。然后,按照下列面的秘訣進(jìn)行就可以。
1.設(shè)置ADOConnection的ConnectionString
構(gòu)造ConnectionString時,OLE DB的提供者要選擇Microsoft Jet 4.0 OLE DB Provider作為ADO的驅(qū)動程序。這本來是用于連接Access數(shù)據(jù)庫的驅(qū)動程序,但也可打開Excel文件。
連接的數(shù)據(jù)庫名稱當(dāng)然就是你要打開的Excel文件,注意擴(kuò)展名是*.xls,而不是*.mdb。
最關(guān)鍵的一點是,還要設(shè)置擴(kuò)展屬性Extended Properties為“Excel 8.0”,否則,測試連接時會報告無法識別數(shù)據(jù)格式的錯誤。Extended Properties的屬性值在“所有”參數(shù)頁中輸入。
最后,設(shè)置完成后的ConnectionString中的各項參數(shù)為:
Provider=Microsoft.Jet.OLEDB.4.0
Data Source=MyExcelFile.xls
Extended Properties=Excel 8.0
Persist Security Info=False
2.設(shè)置ADODataSet或ADOTable
將ADODataSet或ADOTable連接到剛才的ADOConnection。如果不用ADOConnection,也可以參照上面的方法直接設(shè)置ADODataSet或ADOTable的ConnectionString屬性。
對于ADODataSet,需要將CommandType屬性設(shè)置為cmdTableDirect,而對于ADOTable,則將TableDirect屬性設(shè)置為True。因為,訪問Excel文件是直接的數(shù)據(jù)文件訪問,不是通過SQL語句來操作游標(biāo)訪問的。如果不設(shè)置直接訪問,則系統(tǒng)會報告SQL語句格式錯誤等信息。
然后,當(dāng)你下拉ADODataSet中的CommandText屬性或ADOTable的TableName屬性時,就可以選擇到要打開的工作表了。注意,表名后面多了加一個$符號。
3.打開ADODataSet或ADOTable