循环执行以导入多个Excel文件并将文件中的每个工作簿转换为.dta

时间:2016-02-23 19:11:54

标签: excel for-loop stata

我有一个包含超过60个excel工作簿的文件,我想将它们中的每一个转换为stata中的.dta文件。我在网上搜索,但找不到一个像样的循环方式。我写了一段需要专家帮助的代码。在一个目录中,想要创建一个循环,将它们保存为.dta文件。代码如下

 forvalues i=1/60{

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

}

2 个答案:

答案 0 :(得分: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在目录或文件夹中工作,就可以将文件名保持在最低限度。

答案 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" 


  }