通过foreach循环从Excel导入

时间:2015-10-12 06:56:45

标签: excel foreach import stata

我打算import并通过foreach循环处理各种Excel文件。 import本身不起作用,因为Stata不会将'x'识别为Excel文件名的替代品。

local excelfiles "bb_01 bit0_2 bun comp_03 comp_c01m LLU-ck"
foreach item of local excelfiles {
import excel using "D:\...\...\...\Data\Files\`x'.XLS", sheet("DynamicReport") cellrange(A2:AI201) firstrow
keep v1 v2 v3 v4
save "D:\...\...\...\...\`x'.dta", replace

我得到的错误是file D:\...\...\...\...\Data\Files.XLS not found

1 个答案:

答案 0 :(得分:1)

这里有各种各样的问题。

  1. 您的代码不一致。您在item语句中声明foreach,但在循环中引用x。因此,就Stata而言,永远不会定义本地宏x。这本身并不是错误,但是Stata用空字符串替换对不存在的本地宏(为空)的引用,以及您报告的结果。

  2. 如果您参考x替换item的引用,您的代码仍然无效。请参阅(例如)http://www.stata.com/manuals14/u.pdf 18.3.11和http://www.stata-journal.com/sjpdf.html?articlenum=pr0042,以获得有关使用本地宏引用立即跟随反斜杠的警告。问题是反斜杠既是转义字符又是完整Windows文件路径中的分隔符。应该通过在文件路径中使用正斜杠来解决冲突,即使在Windows中也是如此。

  3. 循环永远不会在您显示的代码段中关闭。

  4. 否则我无法检查您的代码,因为您的代码无法重现。我认为三点...不是字面的,而是取代不应该至关重要的细节。