使用 ADO 讀取所有數據均在一行上的文本文件問: 您好,腳本專家!我有一個固定寬度的文本文件,該文件包含名字(6 個字符)、姓氏(13 個字符)和部門(9 個字符),并且它們均在同一行上。我該如何使用 ADO 來讀取呢? -- DW 答: 您好,DW。坦白地講,我們認為您不能使用 ADO(ActiveX 數據對象)讀取這樣的文件。ADO 是一種和文本文件進行交互的非常好的方法(有關詳細信息,請參閱文章有關文本文件的 ADO 更多知識(英文)),但是,確實,ADO 有些挑剔:它的每項設置都必須完全正確,否則就會拒絕工作。(不像腳本專家,即使所有事情都已準備就緒,他們還是會拒絕工作。)作為一種數據庫技術,ADO 需要一個“結構良好”(借用 XML 領域的一個術語)的數據庫;它無法直接利用您那樣的文件格式并從中產生數據庫。(在這種情況下,可以將您的巨行分成若干單個記錄。) 但是沒關系;畢竟,我們可以使用雖古老但優秀而可靠的 VBScript 來創建結構良好的數據庫。我們今天要做的就是向您展示如何快速而便捷地將您的巨大數據字符串分割成單個記錄。只需通過將這些單個記錄(即,文本文件中的單個記錄)回顯到屏幕上我們就可以達到目的。不過,您可以將這些記錄段寫到另一個文本文件然后使用 ADO 從其中讀取數據。我們只是幫您開個頭,剩下的就要靠您自己了。 首先,我們假定您已擁有一個類似于下面的文本文件,該文件的字段名稱和兩條記錄包含于同一行之上: First Last Dept Ken Meyer Finance Pilar Ackerman HR 我們希望最后的結果同下面的顯示更為相似: First Last Dept Ken Meyer Finance Pilar Ackerman HR 這可能嗎?當然可能:
復制代碼 代碼如下:
Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.OpenTextFile("C:/Scripts/Test.txt", ForReading) strContents = objFile.ReadAll objFile.Close i = False Do Until i = True intLength = Len(strContents) If intLength < 28 Then Exit Do End If strLines = strLines & Left(strContents, 28) & vbCrLf strContents = Right(strContents, intLength - 28) Loop Wscript.Echo strLines