2016-02-23 225 views
0

我有一個文件包含超過60個Excel工作簿,我想將它們中的每一個都轉換爲.dta文件。我搜索網絡,但無法找到一個體面的方式做一個循環。我寫了一個需要專家幫助的代碼。在一個目錄中,並且想創建一個循環來將它們保存爲.dta文件。代碼如下循環導入多個Excel文件並將文件中的每個工作簿轉換爲.dta

forvalues i=1/60{ 

import excel "D:\Okay\""`i'.xlsx", sheet("Sheet1") firstrow clear 
save "D:\Okay\""`i'.dta" 

} 
+0

從你的代碼看來,你有60個文件,而不是1,如「一個文件」中清楚說明的那樣。我沒有編輯過這個。 –

回答

0

我在那邊做了很多錯誤;不過,我相信我明白了。這是你必須編碼才能工作

forvalues date=1/57{ 


    import excel "D:/Rami Chehab/University Degrees & Courses/PhD in Labour Economics/Data/Data 2016/UNCTAD/Okay/`date'.xlsx", sheet("Sheet1") firstrow clear 
    save "D:/Rami Chehab/University Degrees & Courses/PhD in Labour Economics/Data/Data 2016/UNCTAD/Okay/`date'.dta" 


    } 
1

我們不能嘗試你的代碼,因爲它是特定於你的計算機。在發佈問題之前請先研究https://stackoverflow.com/help/mcve

但它顯然,

\Okay\""`i'.xlsx" 

是不太可能有幫助。正如許多次所記錄的那樣 - 例如[U] 18.3.10在http://www.stata.com/manuals14/u18.pdfhttp://www.stata-journal.com/sjpdf.html?articlenum=pr0042之內 - 你想在Windows下使用的反斜槓(最好不要假設每個人都能識別你的操作系統),在Stata中也有一個角色作爲轉義字符。

該命令會更好結束

\Okay/`i'.xlsx" 

和類似的評論適用於其他命令行提的文件:本地宏引用正斜槓前更改反斜槓,並刪除不必要的雙引號分數。

其實這一切都是完全可以避免的。考慮

cd "D:\Rami Chehab\University Degrees & Courses\PhD in Labour Economics\Data\Data 2016\UNCTAD\Okay" 
forvalues i=1/60 { 
    import excel `i'.xlsx, sheet("Sheet1") firstrow 
    save `i'.dta 
} 

一旦你cd到一個目錄或文件夾中,則可以使文件名到最低限度。

相關問題